C++ strof()函数将小数点放错位置

C++ strof()函数将小数点放错位置,c++,c,floating-point,strtod,C++,C,Floating Point,Strtod,我有一个字符串“1613894376.500012077”,我想使用strof转换为浮点1613894376.500012077。问题是,当我使用strof时,我得到了以下结果,小数点放错了1.61389e+09。请帮助我确定如何正确使用strof。一个典型的是32位,只能精确地表示大约232个不同的值。“1613894376.500012077”不是其中之一 “1.61389e+09”是与“1613890000.0”相同的值,表示float可以表示的闭合值 最接近的两个浮动是: 1613894

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

一个典型的是32位,只能精确地表示大约232个不同的值。“1613894376.500012077”不是其中之一

“1.61389e+09”是与“1613890000.0”相同的值,表示
float
可以表示的闭合值

最接近的两个浮动是:

1613894272.0 
1613894400.0 // slightly closer to 1613894376.500012077
以更高的精度打印以查看更多的数字。

典型的是32位,只能精确表示大约232个不同的值。“1613894376.500012077”不是其中之一

“1.61389e+09”是与“1613890000.0”相同的值,表示
float
可以表示的闭合值

最接近的两个浮动是:

1613894272.0 
1613894400.0 // slightly closer to 1613894376.500012077

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

小数点没有放错位置。符号“1.61389e+09”表示1.61389•109,即1613890000,小数点位于正确的位置


在您的计算机中,strof的实际结果可能是1613894400。这是IEEE-754 binary32(“single”)格式所能表示的最接近1613894376.500012077的值,该格式通常用于
float
。使用
%g
打印时,默认情况下仅使用六位有效数字。要更精确地查看,请使用
%.999g
打印。小数点没有放错位置。符号“1.61389e+09”表示1.61389•109,即1613890000,小数点位于正确的位置


在您的计算机中,strof的实际结果可能是1613894400。这是IEEE-754 binary32(“single”)格式所能表示的最接近1613894376.500012077的值,该格式通常用于
float
。使用
%g
打印时,默认情况下仅使用六位有效数字。要更精确地查看,请使用
%.999g
打印
1613894376.500012077
的数字是等效的(与
1.61389e+09
的机器精度相同)。
e+09
后缀表示小数点位于其放置位置的九位小数(或数字乘以
10
到九次方)。这是计算机科学中一种常见的记法,称为科学记法。

数字
1613894376.500012077
是等效的(与
1.61389e+09
相同的数字达到机器的精度)
e+09
后缀表示小数点位于其所在位置的九位小数(或将该数字乘以
10
至九次方)。这是计算机科学中一种常用的表示法,称为科学表示法。

转换成功。这取决于您如何显示它。浮点数只有大约6或7个小数位数的精度,因此1.61389 x 10^9似乎是正确的。千兆瓦,您可能需要查看。转换成功。这取决于您如何使用重新显示。浮点数只有大约6或7个十进制数字的精度,因此1.61389 x 10^9似乎正确。千兆瓦,您可能需要查看。谢谢,我切换到
strtod()
,为了以更高的精度正确打印,使用了
std::fixed
std::setprecision(9)
。谢谢,我切换到了
strtod()
,为了更准确地打印,使用了
std::fixed
std::setprecision(9)