关于float门类
关于float类型一般float类型占用四个字节现在有一种float16类型,占用两个字节,那么这样的存储类型最多能表
关于float类型
一般float类型占用四个字节
现在有一种float16类型,占用两个字节,
那么这样的存储类型最多能表示小数点后几位呢?
比如现在内存中有这样两个字节,表示一个float16类型的数据为:C5 3F
转化成float类型后是多少呢?
现在又这样两个数据,1.54287和1.34039,如果按照float16类型来存,存到文件中之后发现变成了1.545312和1.342187,怎么样能不损失精度呢?(除了不扩大倍数之后再存)。
在线等了解的老师解答!!!
[解决办法]
参考http://en.wikipedia.org/wiki/Half-precision_floating-point_format
[解决办法]如果没有更多的信息,可以写程序验证,
lz 也可以参阅 深入理解计算机系统
[解决办法]浮点数都有误差。
[解决办法]可以用指数和尾数来表示:
1.54287 可以表示为154287* e-5,所保存(154287,5)就可以避免序列化和反序列化过程中的误差。
不过浮点数过程中的误差是避免不了的。
[解决办法]用10进制小数不能精确表示某些三进制小数0.1(3)=0.33333333333……(10)
同理,用二进制小数也不能精确表示某些10进制小数。