双数据类型格式

时间:2011-02-08 20:05:09

标签: java

这对你们来说是一个非常微不足道的问题。请建议我实现最佳解决方案的方法。我的要求是,我有一个传入的Double值,所以如果小数点后的值是0,则截断小数点后的所有内容。例如:30.0应该变为30,其中30.12或30.1应该保持不变。到目前为止,我只想出办法知道小数点后有多少位数。

package com.convertdatatypes;
public class DoubleCheck {

 public static void main(String args[]){

     Double value = 30.153;
     String val = value.toString(); 
     String[] result = new String[2];

     for(int i=0; i<val.length(); i++){
     result = val.split("\\.");  
     System.out.println("Number of Decimals in: " + val + " : " + result[1].length());
     }
 }

}

2 个答案:

答案 0 :(得分:3)

使用具有以下模式的java的DecimalFormat:

0.##

请参阅http://download.oracle.com/javase/1.4.2/docs/api/java/text/DecimalFormat.html

答案 1 :(得分:1)

另一种方法是使用以下

double value = 30.153;
Object value2 = value == (long) value ? String.valueOf((long) value) : value;
System.out.println("Number of Decimals in: " + value2);

这样,如果值不变则打印为long,否则打印为double。