C提取浮点数的小数位

时间:2018-08-10 17:01:47

标签: c floating-point truncate

我知道float中有一些截断问题或舍入问题。但任何值的截断应相同。但有人可以在这里解释。为什么4.2 5.2等的输出提取19作为小数部分,而1.2,2.2等的提取为20。

通过程序尝试如下表示模式

1.23 => 100和23

4.2 => 400和20等。

我猜在我的机器4.2中存储为4.1999998092651367187500000000000000000000000000000000000000000 而1.2为1.2000000476837158203125000000000000000000000000000000000000000 但为什么 ?什么不同于1.2和4.2。

#include <stdio.h>

int main(void)
{
    for ( float value = 1.2 ; value < 100; value++){
    printf("Obtained value : %f real part : %d decimal part : %f \n", value, (int)value * 100, (value - (int) value) * 100);
    }
    return 0;
}

0 个答案:

没有答案