为什么精度会丢失?
来源:2-1 Redis字符串类型
慕粉1504263447
2020-06-21 09:47:53
2回答
给你举个例子:
有符号 8 位整型 (-128 到 127)。
整数的精度是准确的,因为每一位都用的恰到好处。
如果你想存储更大的数字,增加存储的位数就好了,有符号 16 位整型 (-32768 到 32767)。
但是浮点数就不同了,浮点数是无限的,你只能尽可能接近的存储一个浮点数,在整数 1 和 3之间只有2,但是 0.1 和 0.3 之间还有无数个浮点数!
精度丢失是因为在存储过程中,十进制都是转换为二进制存储的,但是浮点数的二进制并不能表达出无限个,所以必然存在精度丢失。
按照IEEE 754规定(大多数语言都是按照这个规定设计浮点数的),对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E,剩下的23位为有效数字M。
同上,23位无法表示所有有效的浮点数,所以必然存在精度丢失。
好帮手慕笑蓉
2020-06-21
同学,你好。浮点数在表示数字时并不是很精确,是有误差的,因为把一个十进制的小数转换成浮点数如:一个二进制位表示0.5,两个则表示0.5+0.25=0.75,只能无限去接近一个数,无法精确表示一个数据;因此进度会丢失。
如果解决了你的疑惑,请采纳,祝学习愉快~
相似问题