2011-05-30 51 views

回答

10

关于什么:

std::stringstream ss; 
ss << std::fixed << std::setprecision(N) << double_number; 
// ss.str() gives you the string 
+0

所以我们绝对需要知道N,没有神奇的解决方案。 – Guillaume07 2011-05-30 10:39:02

+3

在编程中没有“魔法”; P – 2011-05-30 10:41:53

2

它不能保证有一个double具有完全相同这个值:1.4291400000000001。它可能比这个稍微大一些,或者比它小一点。更不像是那样。

在这个事实之后,我可以说没有最好的办法从1.42914那里得到。您可能会得到1.42913,因为实际的双倍值可能是:1.4291399999999999而不是上述值。

阅读:What Every Computer Scientist Should Know About Floating-Point Arithmetic

+0

是的,但是,在1.421399999和1.429140000001的情况下,我们都想要1.4214正常..所以也许有一个很好的方法来做到这一点 – Guillaume07 2011-05-30 10:42:33

+0

@ Guillaume07:当然,'setprecision(4) 。 – MSalters 2011-05-31 10:34:06

相关问题