Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java十进制取整错误?_Java_Decimalformat - Fatal编程技术网

Java十进制取整错误?

Java十进制取整错误?,java,decimalformat,Java,Decimalformat,似乎与DecimalFormat舍入数字的方式不一致 new DecimalFormat(“0.0”,新的DecimalFormatSymbols(Locale.US))。格式(数字) 下面是针对一些不同的number值返回的内容 0.05返回0.0 0.15返回0.2 0.25返回0.2 0.35返回0.4 0.45返回0.4 为什么会发生这种情况?更重要的是,如何获得正确的值(0.25舍入时为0.3,0.45舍入时为0.5)?Javadoc声明: DecimalFormat提供在Roun

似乎与
DecimalFormat
舍入数字的方式不一致

new DecimalFormat(“0.0”,新的DecimalFormatSymbols(Locale.US))。格式(数字)

下面是针对一些不同的
number
值返回的内容

  • 0.05返回0.0
  • 0.15返回0.2
  • 0.25返回0.2
  • 0.35返回0.4
  • 0.45返回0.4
为什么会发生这种情况?更重要的是,如何获得正确的值(0.25舍入时为0.3,0.45舍入时为0.5)?

Javadoc声明:

DecimalFormat提供在RoundingMode中定义的用于格式化的舍入模式。默认情况下,它使用RoundingMode.HALF_偶数

HALF_EVEN
正是您所注意到的:当它正好位于两个数字的中间时,它更喜欢舍入到最近的偶数。(这有很多原因,主要是因为它不会平均向上或向下偏移,从而平衡舍入误差。)

只需调用
setRoundingMode(RoundingMode.HALF\u UP)
即可了解您描述的行为