强制双写整数

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 位的准确度。

【讨论】:

以上是关于强制双写整数的主要内容,如果未能解决你的问题,请参考以下文章

ASP强制转换成整数!

强制整数初始化为 0 msvc++

Bigrquery 不能强制整数

C语言强制类型转换

尝试加载 gem 'devise. ActiveSupport:持续时间不能强制转换为整数

赋值使指针从整数而不进行强制转换