现在我理解float
的准确度低于double
,但这可以解释我何时拥有std::string
:
"7.6317"
我做了:
float x = atof(myString.c_str());
预计得到7.63170004?有什么方法可以告诉x的分配只读取前4位小数?或者这是因为浮动表示存储数字7.6317的方式?
答案 0 :(得分:0)
某些浮点文字在计算机中没有准确的表示形式,即使 - 以十进制表示法 - 数字似乎无害。这是因为计算机使用2作为基础。因此,即使一个数字在基数10中可能具有有限的表示,它也可能在基数2中没有。
答案 1 :(得分:-1)
是。这是预料之中的。这就是所谓的浮点错误。
答案 2 :(得分:-1)