我想转换String" 0.955000"至" 0.96"使用Java DecimalFormat
这是我的代码段:
String inputVal = "0.955000";
DecimalFormat decFmt = new DecimalFormat("0.00")
decFmt.setRoundingMode(RoundingMode.HALF_UP);
String outputVal = decFmt.format(Double.valueof(inputVal));
这里我得到输出值为" 0.95"。 我期待输出为" 0.96"。有谁知道我的代码中有什么问题? 有没有办法,我可以得到" 0.96"使用十进制格式。
答案 0 :(得分:2)
这是我尝试过的代码:
import java.math.RoundingMode;
import java.text.DecimalFormat;
public class Test
{
public static void main(String[] args)
{
String inputVal = "0.955000";
DecimalFormat decFmt = new DecimalFormat("0.00");
decFmt.setRoundingMode(RoundingMode.HALF_UP);
String outputVal = decFmt.format(Double.valueOf(inputVal));
System.out.println(outputVal);
}
}
我使用jdk 7获得的输出是0.96但是使用jdk 8我得到了0.95。
原因如下:0.955 as double是:IEEE二进制格式的0.9549999833106995
圆形上半部分将变为:0.95,这是正确的答案。
答案 1 :(得分:0)
发现了这个问题。早些时候我尝试使用Java 7并且获得了0.96。现在更改为Java 8后,我得到了0.95。我认为这是一个Java版本的问题。对于十进制格式,Java 7和8的行为方式不同。