Mal*_*dom 14 c floating-point printf
我正在尝试使用打印一些浮点数printf.例如:
int main()
{
printf("%.1f",76.75);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:76.8
我对结果有一些疑问.
首先,为什么不打印76.7?
第二,它是如何围绕这个数字的呢?
Pas*_*uoq 12
除了现有的答案,请注意许多C编译器尝试遵循IEEE 754的浮点问题.IEEE 754建议根据当前舍入模式舍入从二进制浮点到十进制的转换.默认的舍入模式是"舍入到最近并且与偶数相关".某些编译平台不考虑舍入模式,并且在从浮点到十进制的转换中始终根据默认的最近偶数模式进行舍入.
由于76.75完全代表7675/100,它恰好在76.7和76.8之间.当应用"round to nearest-even"时,后一个数字被认为是"偶数".这可能是您的编译平台选择生成此十进制表示作为浮点数的十进制转换的原因76.75.
Yu *_*Hao 10
C99§7.19.6.1该
fprintf功能
f,F甲
double表示浮点数参数被转换为十进制表示法中的样式[?]ddd.ddd,其中的小数点字符后的数字位数等于指定的精度.如果缺少精度,则取6; 如果精度为零#且未指定标志,则不显示小数点字符.如果出现小数点字符,则在其前面至少出现一个数字.该值四舍五入到适当的位数.
| 归档时间: |
|
| 查看次数: |
16379 次 |
| 最近记录: |