如何在 C++ 中使用 double 获取正确的小数数量

How to get the correct amount of decimals using double in C++

提问人:Zeptuz 提问时间:11/29/2022 最后编辑:πάντα ῥεῖZeptuz 更新时间:11/29/2022 访问量:61

问:

基本上,如果我写 15.20,我希望返回 15.20,如果我写时没有任何额外的零或任何舍入,那么 0 仍然被打印出来。 我尝试使用 setprecision,但它只是添加了一堆零。

我的代码:

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
  double flyttal; 
  cout << "Skriv in ett flyttal: ";
  cin >> flyttal;
  cout << "Du skrev in flyttalet: " << fixed << setprecision(2) << flyttal << endl;

  return 0; 
}

现在浮点值 15.20 很好,但如果我想写 1.315456,我只会得到 1.32。我希望能够获得与我输入的相同数量的小数。

C++ 十进制 精度

评论

0赞 wohlstad 11/29/2022
c++ 没有十进制类型,浮点值由 IEEE-754 标准 (en.wikipedia.org/wiki/IEEE_754) 表示。你认为你“放”的东西(例如1.315456)不是变量中实际存储的必要条件,因为并非所有十进制分数都可以表示为 IEEE-754 值。
1赞 Some programmer dude 11/29/2022
问题是你无法真正知道浮点值中有多少个小数。例如,某些值无法以浮点类型精确表示,因此它将被舍入到最接近的值,这可能会导致许多意外的额外小数。你还想数一数吗?
4赞 463035818_is_not_an_ai 11/29/2022
A 不会根据用户输入调整其精度。A 可以做你想做的事:读取一个字符串,解析它以获得一个 ,但要记住用户输入中的精度,然后打印相应的或者干脆阅读并打印一个doublestd::stringdoubledoublestd::string
2赞 Kenny Ostrom 11/29/2022
如果你肯定想要百分之一,我建议在内部使用整数类型,并在显示时添加两个小数点。(或者像前面注释一样的字符串,但整数更适合做总和之类的事情)在处理金钱时,我们称之为整数便士,您不希望出现四舍五入错误。
0赞 πάντα ῥεῖ 11/29/2022
stackoverflow.com/questions/588004/......

答: 暂无答案