用BigDecimal 这个是精确计算!比如:在工資什么上面!
我这里有一个例子做了下!
原因就是浮点数是不能准确表示的。他有精度损失所以出现这个结果
用BigDecimal 可以,不过进行除法運算时也要注意精度,否则会溢出
应该补充一些计算机基础知识了.
嗯,是double的精度问题个人意见,你可以考虑用BigDecimal或者,将两个数字哃时扩大相同的倍数将小数点移除掉。然后结果再除回来推荐你看看Java解惑。
因为二进制无法精确表示浮点小数的小数部分,所以只能取菦似值,而bigdecimal是一个java类,不单是一个简单类型,用它的方法可以做到更精确的计算
double和float都会丢失有丢失精度的问题但是有种情况要注意,当两个数尛数点后的值为0或者5时(如4.04.5)他的结果是准确的
计算机是用二进制表达一个数字的,它总之是不能表达一个足够精确的数毕竟她有位數限制。
天啊!浮点数精度问题是所有讲浮点数的地方都应该讲的啊!基础知识啊!
真的是精度问题?谁能看看下面这段代码打印什么结果
这个有什么特别,我试过了这段代碼,没看出什么特别呀,
还有劳这位小哥讲解下啊,
外,其他的都使等式成立
没办法,早就习惯了照着教科书瞎叫唤的回答
什么都得自己动手測试然后说话。
但是java没有这个问题
29楼的问题能解释下为什么么最近在研究JAVA这个东西。工作需要看起来非常有意思。
请教了,不知道怎麼解释这个现象.
二进制中不能精确的表示0.1就跟十进制中10/3无法整除一样.core java中有详细的解释
真的有意思,的确如29楼所说,真的是精度问题吗?
不知该怎麼解释,还请高手来说两句
对于小数0.6875计算机是这样表示的
拍照搜题秒出答案,一键查看所有搜题记录
拍照搜题秒出答案,一键查看所有搜题记录