Java理论与实践: 您的小数点到哪里去了? - 编程入门网
cimal(double) 构造函数,因为如果不了解它 ,会在计算过程中产生舍入误差。请使用基于整数或 String 的构造函数。
构造 BigDecimal 数 对于 BigDecimal ,有几个可用的构造函数。其中一个构造函数以双精度浮 点数作为输入,另一个以整数和换算因子作为输入,还有一个以小数的 String 表示作为输入。要小心使用 BigDecimal(double) 构造函数,因为如果不了解它 ,会在计算过程中产生舍入误差。请使用基于整数或 String 的构造函数。 如果使用 BigDecimal(double) 构造函数不恰当,在传递给 JDBC setBigDecimal() 方法时,会造成似乎很奇怪的 JDBC 驱动程序中的异常。例如 ,考虑以下 JDBC 代码,该代码希望将数字 0.01 存储到小数字段:
在执行这段似乎无害的代码时会抛出一些令人迷惑不解的异常(这取决于具 体的 JDBC 驱动程序),因为 0.01 的双精度近似值会导致大的换算值,这可能 会使 JDBC 驱动程序或数据库感到迷惑。JDBC 驱动程序会产生异常,但可能不 会说明代码实际上错在哪里,除非意识到二进制浮点数的局限性。相反,使用 BigDecimal("0.01") 或 BigDecimal(1, 2) 构造 BigDecimal 来避免这类问题 ,因为这两种方法都可以精确地表示小数。 结束语 在 Java 程序中使用浮点数和小数充满着陷阱。浮点数和小数不象整数一样 “循规蹈矩”,不能假定浮点计算一定产生整型或精确的结果,虽然它们的确“ 应该”那样做。最好将浮点运算保留用作计算本来就不精确的数值,譬如测量。 如果需要表示定点数(譬如,几美元和几美分),则使用 BigDecimal。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |