如何解决strtof() 函数错位小数位
我有一个字符串 "1613894376.500012077"
,我想使用 strtof
来转换为浮点 1613894376.500012077
。问题是当我使用 strtof
时,我得到以下结果,小数点位置错位 1.61389e+09
。请帮助我确定如何正确使用 strof
。
解决方法
典型的 float
是 32 位的,只能准确表示大约 232 个不同的值。 “1613894376.500012077”不是其中之一。
“1.61389e+09”与“1613890000.0”的值相同,表示float
可以表示的接近值。
2 个最接近的 float
是:
1613894272.0
1613894400.0 // slightly closer to 1613894376.500012077
更精确地打印以查看更多数字。
,小数点没有错位。符号“1.61389e+09”表示1.61389•109,即1,613,890,000.,小数点在正确位置。
strtof
在您的计算机中的实际结果可能是 1,894,400。这是 IEEE-754 binary32(“单一”)格式可以表示的与 1613894376.500012077 最接近的值,也是 float
常用的格式。使用 %g
打印时,默认仅使用六位有效数字。要更精确地查看它,请使用 %.999g
打印它。
数字 - New chapter on existent Section
是等价的(与 1613894376.500012077
达到机器精度的数字相同。)1.61389e+09
后缀表示小数点位于小数点右边的九位放置它的位置(或者数字乘以 e+09
的九次方)。这是计算机科学中的一种常用符号,称为科学记数法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。