一个关于double类型的处理 定义了一个double d = 5;输出却是5.0,现在要求输出的时候小数点后面有数字则显示正常,如5.1小数点后面没有数字则不显示,直接显示5.如何做?最好不要是那种转化成字符判断处理的那种。谢谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.csdn.net/APOLLO_TS/archive/2007/08/31/1766229.aspx public static void main(String[] args) { double d = 7.0; if(d>(int)d && d<(int)d+1) System.out.println(d); else System.out.println((int)d); } /** * 定义了一个double d = 5; 输出却是5.0,现在要求输出的时候小数点后面有数字则显示正常,如5.1 小数点后面没有数字则不显示,直接显示5. 如何做?最好不要是那种转化成字符判断处理的那种。 * */package csdn.question.myanswer;public class TestDouble { private static double judge(double num) { int numInt = (int)num; //数num的整数部分 double numDouble = num % numInt;//数num的小数部分 return numDouble; } // 判断小数部分,如果是0则显示整数;如果是大于0的小数这显示原数 private static void showNum(double num) { double result = judge(num); if(result > 0) { System.out.println(num); } else { System.out.println((int)num); } } public static void main(String[] args) { double num1 = 2.1; double num2 = 3.0; showNum(num1); showNum(num2); }} 不要字符串判断处理?最后输出的时候用d.toString().replaceFirst("\\.0+", "")不好吗喵? 用原值减去这个值的整型 public static void main(String[] args) { double d = 7.0; if(d-(int)d>0) System.out.println(d); else System.out.println((int)d); } public static void main(String[] args) { double d = 7.0; if(d>(int)d && d<(int)d+1) System.out.println(d); else System.out.println((int)d); }和用原值减去这个值的整型 public static void main(String[] args) { double d = 7.0; if(d-(int)d>0) System.out.println(d); else System.out.println((int)d); } 觉得这2个算法简单哈,思路都是一样的。楼主不想转字符串可以用这2个方法! 取模 public static void main(String[] args) { double d = 7.0; if(d>(int)d && d<(int)d+1) System.out.println(d); else System.out.println((int)d); }或正则表达式d.toString().replaceFirst("\\.0+", "") double d = 5.0; System.out.println(new BigDecimal(String.valueOf(d)).stripTrailingZeros()); 给一个简单的解决办法,很直接,不需要任何判断:public class Test { public static void main(String[] args) { double a=5.2340; DecimalFormat df=new DecimalFormat(""); System.out.println(df.format(a)); }}输出为5.234 (后面的0没有了^_^)如果a=5,则输出为5,如果为5.4,则输出为5.4,非常符合楼主需求。 不好意思,拷贝测试程序的时候没有把import语句拷过来。在上面加上 import java.text.DecimalFormat; public class IntTest{ public static void main(String[] args) { double d=5.0; if(d>Math.floor(d)) { System.out.println(d); } else { System.out.println((int)d); } }} nice 学到好多东西呢。 格式化输出可以使用这个方法System.out.printf(String,Object...) 好.............package j2se.string;/** * 定义了一个double d = 5; 输出却是5.0,现在要求输出的时候小数点后面有数字则显示正常,如5.1 小数点后面没有数字则不显示,直接显示5. * @author feng * */public class CsdnTwo { public void testDouble(double d){ if(d>(int)d && d<(int)d+1){ System.out.println(d); }else{ System.out.println((int)d); } } public static void main(String[] args) { // TODO Auto-generated method stub CsdnTwo ct = new CsdnTwo(); ct.testDouble(5.0); ct.testDouble(5.4); }} list分段取值问题 JAVA在控制台上打印五角星 webwork入门的helloworld问题,按照书上的代码来试验,搞了好几天都不成功,快郁闷死了,大家帮我看看是哪里的问题 在java Swing中,如何在JSplitPane中固定分隔线? 看看以下两道题如何实现? Gosling写的书中的矛盾之处? 嵌套类 请教java中文字输入的问题 怎样设置一个页面过期?清囊相赠!!! JAVA的好书 关于string对象 线程??????
public static void main(String[] args) {
double d = 7.0;
if(d>(int)d && d<(int)d+1)
System.out.println(d);
else System.out.println((int)d);
}
/**
* 定义了一个double d = 5;
输出却是5.0,现在要求输出的时候小数点后面有数字则显示正常,如5.1
小数点后面没有数字则不显示,直接显示5.
如何做?最好不要是那种转化成字符判断处理的那种。
* */
package csdn.question.myanswer;public class TestDouble {
private static double judge(double num) {
int numInt = (int)num; //数num的整数部分
double numDouble = num % numInt;//数num的小数部分
return numDouble;
}
// 判断小数部分,如果是0则显示整数;如果是大于0的小数这显示原数
private static void showNum(double num) {
double result = judge(num);
if(result > 0) {
System.out.println(num);
} else {
System.out.println((int)num);
}
}
public static void main(String[] args) {
double num1 = 2.1;
double num2 = 3.0;
showNum(num1);
showNum(num2);
}
}
最后输出的时候用d.toString().replaceFirst("\\.0+", "")不好吗喵?
public static void main(String[] args) {
double d = 7.0;
if(d-(int)d>0)
System.out.println(d);
else
System.out.println((int)d);
}
double d = 7.0;
if(d>(int)d && d<(int)d+1)
System.out.println(d);
else System.out.println((int)d);
}
和
用原值减去这个值的整型
public static void main(String[] args) {
double d = 7.0;
if(d-(int)d>0)
System.out.println(d);
else
System.out.println((int)d);
}
觉得这2个算法简单哈,思路都是一样的。楼主不想转字符串可以用这2个方法!
public static void main(String[] args) {
double d = 7.0;
if(d>(int)d && d<(int)d+1)
System.out.println(d);
else System.out.println((int)d);
}
或
正则表达式
d.toString().replaceFirst("\\.0+", "")
System.out.println(new BigDecimal(String.valueOf(d)).stripTrailingZeros());
public class Test { public static void main(String[] args) {
double a=5.2340;
DecimalFormat df=new DecimalFormat("");
System.out.println(df.format(a));
}
}
输出为5.234 (后面的0没有了^_^)
如果a=5,则输出为5,如果为5.4,则输出为5.4,非常符合楼主需求。
在上面加上 import java.text.DecimalFormat;
public class IntTest
{
public static void main(String[] args)
{
double d=5.0;
if(d>Math.floor(d))
{
System.out.println(d);
}
else
{
System.out.println((int)d);
}
}
}
System.out.printf(String,Object...)
package j2se.string;/**
* 定义了一个double d = 5;
输出却是5.0,现在要求输出的时候小数点后面有数字则显示正常,如5.1
小数点后面没有数字则不显示,直接显示5.
* @author feng
*
*/public class CsdnTwo {
public void testDouble(double d){
if(d>(int)d && d<(int)d+1){
System.out.println(d);
}else{
System.out.println((int)d);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
CsdnTwo ct = new CsdnTwo();
ct.testDouble(5.0);
ct.testDouble(5.4);
}}