warning C4244: '=' : conversion from 'unsigned int' to 'float', possible loss of data 难道浮点数不能处理int中的任何值吗?
unsigned int: 0 to 4,294,967,295
float 3.4E +/- 38 (7 digits) Wiki:
浮点表示法比定点表示法的优点(及 (整数)表示是指它可以支持范围更广的值。
任何洞察力都会有帮助,谢谢。
http://msdn.microsoft.com/en-us/library/s3f49ktz%28VS.80%29.aspx
发布于 2010-08-04 00:28:58
“无符号int”和“float”都使用32位来存储值。由于浮动的范围更大,它必然会牺牲一定的精度。这意味着有些未签名的int值不能在浮点数中准确表示。MSDN提供了更多细节。
发布于 2010-08-04 00:26:38
正如您在问题中所指出的,浮点数仅取7位数,而不是INT_MAX中的10位数。我相信这将是在转换时发出C4244警告的原因。
发布于 2010-08-04 00:31:57
来自维基百科:
单精度,在C语言家族中称为“浮动”,在?中称为“实”或“实*4”?福特伦。这是一种占用32位(4字节)的二进制格式,其意义和精度为24位(大约7位十进制数字)。
由于int具有32位(通常)和浮点具有32位(部分保留为指数),有许多int值不能精确地用浮点类型表示。
https://stackoverflow.com/questions/3401722
复制相似问题