printf,如何为整数插入小数点

时间:2013-08-27 12:50:27

标签: c printf

我有一个UINT16无符号整数,说

4455, 312, 560 or 70.

如何使用printf在最后两位数之前插入小数点,以便示例数字显示为

44.55, 3.12, 5.60 or 0.70

如果没有printf解决方案,还有其他解决方案吗?

我不想使用浮点。

4 个答案:

答案 0 :(得分:7)

%.2d可以添加额外的填充零

printf("%d.%.2d", n / 100, n % 100);

例如,如果n560,则输出为:5.60

编辑:根据@Eric Postpischil的评论,我最初没有注意到UINT16,最好使用:

printf("%d.%.2d", (int) (x/100), (int) (x%100));

答案 1 :(得分:3)

printf("%d.%.2d", x / 100, x % 100);

答案 2 :(得分:2)

你可以直接使用 printf 而不使用浮动

printf("%d.%02d", num/100, num%100);

%02d表示右对齐零填充。

if num is 4455 ==>output is 44.55  
if num is 203  ==>output is 2.03

修改
 通过查看来自@ Eric Postpischil的评论,最好像这样使用。

printf("%d.%02d", (int) (num/100), (int) (num%100));

答案 3 :(得分:0)

具有int x1000精度1234123-> 1234.123

printf("%4d.%.3d\n", x / 1000, x % 1000);

如果您需要四舍五入到小数点后两位

printf("%4d.%.2d\n", ((x+5)/10) / 100, ((x+5)/10) % 100);

仅通过阳性测试

input        print
000004       0.00
000005       0.01

000014       0.01
000015       0.02

000100       0.10
000101       0.10

000105       0.11
000994       0.99
000995       1.00
...