让我们考虑一下double R = 99.999999;
(可以通过其他一些计算得到),现在所需的输出 99.99
我尝试使用printf("%.2lf",R);
,但它正在舍入该值。如何获得所需的输出? (最好使用printf
)
答案 0 :(得分:10)
#include <math.h>
...
printf("%.2f", floor(100 * R) / 100);
答案 1 :(得分:4)
你所要做的就是从数字中减去.005,并且魔术般的printf会按你的意愿行事:总是向下舍入。
答案 2 :(得分:2)
sprintf
将它放入缓冲区,然后将NUL char两个字节放过'。'
然后使用中间字符串printf
最终字符串。
答案 3 :(得分:2)
如果您拥有它,请使用fmod()
来切断double
的尾部:
double rounded = R - fmod(R, 0.01);
// Now just print rounded with what you were using before
如果R
为正面或负面,则具有相同的优势。
答案 4 :(得分:0)
你可以乘以100,然后截断为整数吗?然后你就可以格式化结果,就像用美元和美分一样。由于浮点表示问题,简单地除以100可能会使您回到正方形。
答案 5 :(得分:0)
使用演员表的另一种解决方案:
...
printf("%.2lf", (double) ((int) (R * 100)) / 100);
答案 6 :(得分:0)
另一种方式,真正签署不可知论者: printf(“%d。%d \ n”,(int)r,abs((int)(r * 100)%100));
答案 7 :(得分:-1)
使用GLibC中的double trunc(double)
怎么样?