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)
。