在32位平台上 ,通常int是4字节长度 ,最多表示到21亿多,而int型是“绝对精确 ”的,换句话说 ,就是int行最多可以保证10位十进制有效数字的精确度 。

而float只能保证6位有效数字的精确度,因此int到float的转换是可能丢失精度的,比如整数“1234567899 ”转换成float后 ,大约是:1.23457936乘10的9次方,也就是从第7位有效数字开始已经不准确了 。

warning C4244: “=” : 从“float”转换到“int	”	,可能丢失数据  棋牌技术  第1张

double可以保证15位10进制有效数字的精度,所以从int到double不会有这个警告。

warning C4244: “=” : 从“float”转换到“int	”,可能丢失数据  棋牌技术  第2张

在32位平台上 ,通常int和float都是4字节的 ,那既然字节数一样,凭什么int只能表示到21亿,而float可以表示到10的38次方?答案就是float跟int相比 ,牺牲了精确度,换来了更大的表示范围。

未经允许不得转载! 作者:棋牌源码网,转载或复制请以超链接形式并注明出处棋牌源码网

原文地址:《warning C4244: “=” : 从“float”转换到“int”,可能丢失数据》发布于:2021-08-06