double型精度,在减法中无法修复的问题
vb.net吧
全部回复
仅看楼主
level 1
蓝梦妖蝶 楼主
double型数据我一般用转成string然后再转成double的方法修正精度
decimal可以解决,但是治标不治本。还是会有概率出现0.9999999999这种情况。
最近发现转成字符再转回来,也有修正不了的精度。
如下公式,i=52,num=6.1,num_step=-0.1。结果就算出来0.9999999了。
j= num +num_step * (i- 1.0)
2021年01月22日 07点01分 1
level 3
这个好像没什么好的方法,因为双精度数(小数)的存储形式有点特别,分两部分,小数部分几乎不是用10进制计算转化来的结果,所以结果怪怪的,C,VB等都有这个问题,一般,保留小数位数,基本会得精确值吧。
2021年05月16日 16点05分 2
level 3
不是语言的锅,ieee754都有这类问题。再者任何进制都有不能精确表示的数
2021年05月18日 02点05分 3
1