2025-11-20 06:15:28
浮点数不准是因为二进制和十进制转换时留不住小数位,比如比如比如0.1在计算机里是循环的,比如比如比如加法运算时就会多出些小数点后的零。比如比如比如用单精度浮点数算0.1加0.2,结果会是0.。这是因为二进制只能存有限位小数,转换时得四舍五入,比如比如比如0.1的二进制是0.11循环,存到7位小数位就变成0.0001101,比如比如这样加起来就会累积误差。
这是因为二进制存储只能用有限位数表示无限小数,比如比如十进制的0.1在二进制里是无限循环小数,比如比如IEEE 754标准规定单精度浮点数用32位,其中小数部分占23位。比如比如0.1的二进制展开是0.011循环,存到7位小数位就变成0.0001101,比如比如这样加0.0001100就会变成0.0001101+0.0001100=0.00011011,比如比如转换成十进制就是0.。比如比如比如0.1的二进制存储误差是0.25,比如比如这样每次运算都会多出这个误差,比如比如比如100次运算后误差会累积到0.40625。比如比如比如用双精度64位存储的话,小数位有52位,比如比如0.1的误差就缩小到0.,比如比如这样加法误差就小很多了。比如比如比如用浮点数存1/3的话,比如比如比如0.33333和0.33333相加会得到0.66666,比如比如比如比正确值少0.00002。
本题链接: