【发布时间】:2012-05-17 14:24:27
【问题描述】:
代码:
import java.math.*;
public class x
{
public static void main(String[] args)
{
BigDecimal a = new BigDecimal(0.1);
BigDecimal b = new BigDecimal(0.7);
System.out.println(a);
System.out.println(b);
}
}
输出:
0.1000000000000000055511151231257827021181583404541015625
0.6999999999999999555910790149937383830547332763671875
这很好,因为它可以让我找到最接近给定值的double。
但是0.1 的值更大,0.7 的值小于实际值。
如何获得任何十进制数的两个值(最接近的大和最接近的小)?
假设我以BigDecimal 开头,然后将其转换为double,然后再转换回十进制。我会得到更大或更小的价值。我怎么能得到另一个?
【问题讨论】:
-
如果您以
double开头,我怀疑这是可能的。当您的程序看到您输入的内容为0.1时,该值已经变为0.100000000000000005...。程序无法知道它的舍入方式(因为它无法知道原始值)。希望这是有道理的。
标签: java floating-point bigdecimal