gpt4 book ai didi

c - 不同的浮点输入和输出

转载 作者:行者123 更新时间:2023-11-30 18:57:49 25 4
gpt4 key购买 nike

float amount;
printf("Enter the amount:\n");
scanf("%f", &amount);
// input: 100.10
printf("%f", amount);

输出:100.099998

问题是输出与输入不一样 100.10;

最佳答案

100.10这样的 float 没有精确的二进制表示。这就是您遇到舍入错误的原因。

请注意,后面还有更多内容,printf 中的 %f 实际上需要一个 double 参数,所以这里 amountprintf 调用中转换为 double

原因是,像 printf 这样的可变参数函数总是提升它们的可变参数部分,这就是为什么 printf 没有 float 的格式说明符,因为它总是看到double。因此,演示您的问题的更好程序是使用 double 代替:

double amount;
printf("Enter the amount:\n");
scanf("%lf", &amount);
printf("%f", amount);

您仍然会遇到舍入错误,但不会完成从 floatdouble 的转换。为了演示该程序,您可能需要打印更多数字,因为 double 更准确。

关于c - 不同的浮点输入和输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19420693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com