Sho*_*You 4 c floating-point precision double printf
我想在小数点后打印最多6位数,所以我使用了以下内容:
printf("%.6g",0.127943989);
Run Code Online (Sandbox Code Playgroud)
输出printf是0.127944这是正确的,但当我尝试这个:
printf("%.6g",0.007943989);
Run Code Online (Sandbox Code Playgroud)
输出变为0.00794399,这不是我期望看到的!
似乎printf在小数点后忽略零.那么如何强制它输出最大6位精度?
是"%f"格式说明符:
printf("%.6f\n",0.007943989) // prints 0.007944
Run Code Online (Sandbox Code Playgroud)
你在找什么?请记住,%e如果数字保证,这不会自动切换到格式样式,因此这可能不是您正在寻找的.
例如,以下内容:
printf("%.6g\n",0.00007943989);
printf("%.6f\n",0.00007943989);
Run Code Online (Sandbox Code Playgroud)
打印:
7.94399e-005
0.000079
Run Code Online (Sandbox Code Playgroud)
并且不清楚你是否想要提供的较小数字的指数形式"%g".
请注意,规范%f和%g处理精度规范的行为略有不同.
%f:"小数点字符后的位数等于精度规格"%g:"精度指定有效位数"并且小数点后的零运行不计入有效数字(这表示您看到的行为%g).