强制双写整数
Posted
技术标签:
【中文标题】强制双写整数【英文标题】:Force a double to write the whole Number 【发布时间】:2012-03-07 13:31:34 【问题描述】:如何在 Java 中强制 double
打印整数。不像 1.65462165887E12。但是像 1654621658874684?
谢谢
【问题讨论】:
【参考方案1】:适当地格式化它。例如:
System.out.printf("%.1f", 1654621658874684.0);
或者你可以像字符串一样使用它:
//"%.1f" this mean, how many number after the comma
String value = String.format("%.1f", 1654621658874684.0);
请注意,double
并不是无限精确的。它的精度约为15 to 17 decimal digits。如果您需要任意精度的浮点数,请使用BigDecimal
而不是double
。
【讨论】:
+1 提到双打中缺乏精度可能是问题的一部分。 感谢 BigDecimal 的提示【参考方案2】:你可以使用String.format()
:
System.out.println(String.format("%.0f", 1654621658874684.0d)); // prints 1654621658874684
【讨论】:
感谢您的快速回复【参考方案3】:String formatted = String.format("%f", dblNumber);
【讨论】:
【参考方案4】:我使用类似的东西
if((long) d == d)
System.out.println((long) d);
else
System.out.println(d);
long 可以有 18 位,而 double
最多有 15-16 位的准确度。
【讨论】:
以上是关于强制双写整数的主要内容,如果未能解决你的问题,请参考以下文章