浮点数除以整数除法提高了精度但不明白为什么

问题描述 投票:0回答:0

我正在查看 C 应用程序代码,发现整数除法的浮点数提高了精度,但我不明白为什么。 例如。将浮点数 12926.0 除以整数 100 应该得到 129.26,但我得到的结果是 129.259995

下面是实际代码的简单代码表示。

#include<stdio.h>
#include<stdlib.h>

void main()
{
    int i=12926;
    float k=0.0;

    k=(float) i / 100;

    printf("k <%f>\n",k);
}

我搜索了解释并尝试在 GDB 中调试时评估值和表达式 -

(gdb) print 12926.0 / 100.0
$39 = 129.25999999999999
(gdb) print (float) i / 100
$40 = 129.259995
(gdb) print i / 100
$41 = 129

困惑为什么 C 将结果显示为 129.259995 而不是 129.26。有没有办法控制精度长度得到 129.26 作为结果?

c floating-point precision
© www.soinside.com 2019 - 2024. All rights reserved.