【发布时间】:2022-01-10 05:34:14
【问题描述】:
它将 88.89 打印到控制台,因为 88.888 的百分之一舍入精度等于 88.89。
如何使“b”等于“a”的值四舍五入到百分之一。 (例如 88.89)
我怎样才能让它像这样,| float b = "a" 四舍五入到最接近的百分之一等。
基本上我如何使一个浮点数等于另一个浮点数,但精度较低
示例:
a = 88.888
b = 88.89
c = 88.9
我不希望它打印到控制台,我只想将这些四舍五入的值提供给一个变量,因为我的程序中需要一个四舍五入的数字,而所有其他数字都是小数点后 2 位。如果超过百分之一,它就会退出程序(银行软件,我们没有超过美分的面额。我们基本上只需要百分之一)。
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
float a = 88.888;
cout << fixed << setprecision(2) << a << endl;
float b;
return 0;
}
【问题讨论】:
-
您不能设置
float或double变量的精度。仅用于此类变量的输入/输出。但是你不应该使用float或double作为货币值开始,因为浮点值/数学是不精确的。请改用非浮点数据类型,例如unsigned int,来表示整美分,而不是一美元的小数。或者,有很多库提供用于货币值的固定精度类型。 -
因此,如果我理解正确,您总是需要两个小数位,在这种情况下,我建议使用整数,并且在需要输出时始终使用
/ 100.0。 -
根据您对此处解决方案的重视程度,请查看C++ decimal data types
-
“我如何使“b”...四舍五入到百分之一” 从字面上理解这个问题,你不能。
float和double类型没有“百分之一”,因为它们使用 2 的幂作为它们的位置,并且没有两个幂的组合可以产生“百分之一”。它只能是近似的。
标签: c++ math rounding finance banking