从unsigned int转换为float

从unsigned int转换为float,第1张

概述从unsigned int转换为float

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)

维基:

The advantage of floating-point representation over fixed-point (and整数)表示就是它可以支持更广泛的值。任何见解将是有益的,谢谢。标识符“creal”未定义 – 在Mac上可见,但在linux上不可见在windows C / C ++中使用半字节(4位variables)将TrueType字形转换为PNG图像?如何转换LPCTSTR至LPSTR?提交一个TLB文件到存储库http://msdn.microsoft.com/en-us/library/s3f49ktz%28VS.80%29.aspxHadoop(Java)更改映射器输出值的typeslisp的静态types推断,用于windows?“整型”是什么意思?使用windows API获取文件关联Bash命令用于在ubuntu的目录中查找具有特定文件types的所有文件的大小'unsigned int'和'float'都使用32位来存储值。 由于浮动范围较大,因此必然会牺牲一些精度。 这意味着有一些unsigned int值无法在float中精确表示。 MSDN提供了更多的细节。虽然float比unsigned int支持更宽范围的值,但它的准确性较低。 浮动有一个23位的尾数,就像你张贴的,只有7位十进制数字。 无符号整数支持9位十进制数字。建议:使用double ,而不是float 。编辑:其实,我收回这个建议; 浮点数和整数数据类型是根本不同的,不能直接转换。 你希望得到什么整数值为Single.MaxValue ? 对于Single.NegativeInfinity ? 解释为什么你想从float转换为int将是有帮助的。正如你在你的问题中注意到的那样,float只需要7位数字,而不是INT_MAX中的10位数字。 我相信这将是在此转换中发出C4244警告的原因。从维基百科 :单精度,在C语言家族中称为“float”,在“real”或“real * 4”中称为“float” Fortran语言。 这是一个二进制格式,占用32位(4字节),其有效位数的精度为24位(约7位十进制数字)。有一个32位的int(一般)和一个32位的float(有一部分保留为指数),有很多int值不能被浮点类型精确地表示。试试这个来了解情况float f = 0.0f; while (f < (INT_MAX-1)) f++;你会发现在int为32位或更少的系统上,这实际上是一个无限循环。有趣的是打入无限循环,看看f的值是什么,使f == f + 1 总结

以上是内存溢出为你收集整理的从unsigned int转换为float全部内容,希望文章能够帮你解决从unsigned int转换为float所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1235180.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存