我试图使用printf打印一些浮点数. 例如: int main(){ printf("%.1f",76.75); return 0;} 输出:76.8 我对结果有一些疑问. 首先,为什么不打印76.7? 第二,它是如何围绕这个数字的呢? 除了现有的答案
例如:
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的十进制转换的原因.