浮点不准确的解决方法是什么?

dra*_*vic 0 c++ floating-point

这是代码片段:

float pNum = 9.2;
char* l_tmpCh = new char[255];

sprintf_s(l_tmpCh, 255, "%.9f", pNum);

cout << l_tmpCh << endl;

delete l_tmpCh;
Run Code Online (Sandbox Code Playgroud)

输出是:9.199999809
怎么做才能使结果为9.200000000
注意:我需要每个以9位小数精度打印的浮点数,所以我不想要9.2

jal*_*alf 8

解决方法是不使用浮点数.

并非每个数字都能以浮点格式准确表示,例如9.2.或0.1.

如果你想要显示所有的小数,那么你得到9.199999809,因为它的浮点值最接近9.2.

如果使用浮点数,则必须接受这种不准确性.否则,您唯一的选择是以另一种格式存储该号码.

要求阅读

  • @Yehonatan:没有人说正确使用浮点很容易.;) (2认同)