执行下列计算:
double result = 58/10;结果: 5.7999999999999998
我知道c++会在进一步的计算或打印中对其进行舍入,但我需要将输出与不发生舍入的地方进行比较,因此不能进行舍入,因为这可能只会导致输出中其他地方的差异。
有没有办法提高这类计算的精度,并得到58/10的结果5.8?
发布于 2022-06-06 07:34:56
5.8不能完全用浮点表示。如果您在小数点之后使用2位精度,例如,如果需要存储货币值,则将其存储为" 580“(例如,580美分),并在打印时执行自己的格式设置。
printf("%d.%02d", n / 100, n % 100);或者,将十进制存储为一个分数:
struct Fraction {
int numerator;
int denominator;
};
int main() {
Fraction f(29, 5);
}https://stackoverflow.com/questions/72514373
复制相似问题