所有专家 我在我的程序中使用double类型的变量做了一些逻辑事情。 当double参数的值小于1,00,00,000时,一切都正常。 但是当它的价值变为>一个Crores它会自动转换为exponetial形式,我有一个例外。
例如
值10010001.25成为 1.001000125E7
我希望该值处于正常状态。
任何帮助??
谢谢 Mihir Parekh
答案 0 :(得分:3)
我建议使用System.out.println(new BigDecimal(d))
。
以下是一些替代方案的比较:
import java.math.BigDecimal;
import java.text.DecimalFormat;
public class Test {
public static void main(String[] args) {
double d = 10010001.125;
// 10010001.125000 (lots of trailing zeroes)
System.out.printf("%f%n", d);
// 10010001.13 (perhaps not what you want)
System.out.printf("%.2f%n", d);
// 10010001.12 (not accurate in my opinion)
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(d));
// 10010001.125 (all relevant digits, and no trailing zeroes)
System.out.println(new BigDecimal(d));
}
}
答案 1 :(得分:1)
double
是二进制格式。您看到的两种格式是将double转换为String的不同方式。您可以尝试使用DecimalFormat将数字转换为十进制格式的String。
但是你可能会发现这个更简单
double d = 10010001.25;
System.out.printf("%.2f%n", d);
打印
10010001.25
编辑:
System.out.printf("%,.2f%n", d);
打印
10,010,001.25
答案 2 :(得分:0)
您可以使用DecimalFormat
double d = 10010001.25;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));