gpt4 book ai didi

c - C中的scanf(用于扫描 float )和精度问题

转载 作者:行者123 更新时间:2023-11-30 18:31:28 34 4
gpt4 key购买 nike

我进行了搜索,但找不到任何人遇到我的问题。
我有这个:

    float num;
scanf("%f" , &num);

但实际上,当我输入 4.2 时,它假定它是 4.199999999。为什么?
对于这个问题我该怎么办?我想使用4.2,但我所有的计算都毁了。

编辑:哇@chux 的回答太棒了。我不知道有这个功能。这个:

num = roundf(n * 100);

这是我需要的技巧。

最佳答案

一些小数无法用二进制精确表示。

在二进制中,可以表示

Binary     Decimal 0.1        0.5 0.01       0.25 0.001      0.125 0.0001     0.0625 0.00001    0.03125 0.000001   0.015625 0.0000001  0.0078125 0.00000001 0.00390625

正如您想象的那样,无法将这些二进制数字组合起来形成值 0.10.2。您只能获得一个近似值,在您的情况下为 0.199999999

如果需要精确算术,则不得使用浮点值。

根据您的需要(例如代表金钱值(value)),您可能需要查看Fixed-point arithmetic .

关于c - C中的scanf(用于扫描 float )和精度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22568980/

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