论坛首页 Java企业应用论坛

为神马 1.0 - 0.7 != 0.3 ???

浏览 17100 次
该帖已经被评为良好帖
作者 正文
   发表时间:2011-01-24  
hatedance 写道
这不是语言的问题,这是计算机cpu最终采用2进制的问题。

0 请登录后投票
   发表时间:2011-01-24  
lanbingfeihan 写道
steafler 写道
浮点数不是这样比较的

是的, double类型不能这么进行比较。应该是数据的精度问题。

能不能详细说下,怎么回事!谢谢
0 请登录后投票
   发表时间:2011-01-24  
貌似有书上推荐说涉及到钱都要自己写个money类那个是什么情况?
0 请登录后投票
   发表时间:2011-01-24  
你学JAVA了,你还能问出 “为神马”??
0 请登录后投票
   发表时间:2011-01-26  
wu_quanyin 写道
float doule都不能用于加减乘除运算,会得到一些奇怪的结果.,用BigDecimal


受教了
0 请登录后投票
   发表时间:2011-01-27  
double也不是不能用...只要确知结果的误差小于所需的最小精度就行。现代CPU算double可比BigDecimal快得多,特别是除法。
一概用BigDecimal,说得难听点,纯粹是用一个偷懒(分析数据的具体情况)超过另一个更偷懒(不注意精度问题)。
账目只有RMB/USD的基本可以放心用。当然要记得用差数代替比较。

真正算帐讨厌的是汇率和分摊之类形成的舍入误差处理,呵呵。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics