繁体   English   中英

strtof() function 放错小数位

[英]strtof() function misplacing decimal place

我有一个字符串"1613894376.500012077" ,我想使用strtof来转换为浮点1613894376.500012077 问题是当我使用strtof时,我得到以下结果,小数点错位1.61389e+09 请帮我确定如何正确使用strof

一个典型的float是 32 位的,并且只能表示大约 2 32 个不同的值。 “1613894376.500012077”不是其中之一。

“1.61389e+09”和“1613890000.0”是同一个值,代表一个float可以代表的接近值。

2 个最接近的float是:

1613894272.0 
1613894400.0 // slightly closer to 1613894376.500012077

更精确地打印以查看更多数字。

小数点没有放错。 符号“1.61389e+09”表示 1.61389•10 9 ,即 1,613,890,000.,小数点在正确位置。

strtof在您的计算机中的实际结果可能是 1,613,894,400。 这是 IEEE-754 binary32(“单一”)格式可以表示的最接近 1613894376.500012077 的值,也是float常用的格式。 当您使用%g打印它时,默认情况下仅使用六位有效数字。 要更精确地查看它,请使用%.999g打印它。

数字1613894376.500012077是等价的(直到机器的精度与1.61389e+09相同的数字。) e+09后缀意味着小数点位于它所在位置的九位小数位(或数字乘以10的 9 次方)。 这是计算机科学中一种常见的符号,称为科学记数法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM