c – 为什么printf圆形浮点数?

我试图使用printf打印一些浮点数.
例如:

int main()
{
    printf("%.1f",76.75); 
    return 0;
}

输出:76.8

我对结果有一些疑问.

首先,为什么不打印76.7?

第二,它是如何围绕这个数字的呢?

解决方法

除了现有的答案,请注意许多C编译器尝试遵循IEEE 754的浮点问题. IEEE 754建议根据当前舍入模式舍入从二进制浮点到十进制的转换.默认的舍入模式是“舍入到最近并且与偶数相关”.某些编译平台不考虑舍入模式,并且在从浮点到十进制的转换中始终根据默认的最近偶数模式进行舍入.

由于76.75完全代表7675/100,它恰好在76.7和76.8之间.当应用“round to nearest-even”时,后一个数字被认为是“偶数”.这可能是您的编译平台选择生成此十进制表示形式作为浮点数76.75的十进制转换的原因.

相关文章

首先GDB是类unix系统下一个优秀的调试工具, 当然作为debug代...
1. C语言定义1个数组的时候, 必须同时指定它的长度.例如:int...
C++的auto关键字在C+⬑新标准出来之前基本...
const关键字是用于定义一个不该被改变的对象,它的作用是告诉...
文章浏览阅读315次。之前用C语言编过链表,这几天突然想用C+...
文章浏览阅读219次。碰到问题就要记录下来,防止遗忘吧。文章...