4

我有一个UINT16无符号整数说

4455, 312, 560 or 70.

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

44.55, 3.12, 5.60 or 0.70

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

我不想使用浮点数。

4

4 回答 4

8

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

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

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

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

printf("%d.%.2d", (int) (x/100), (int) (x%100));
于 2013-08-27T12:54:07.500 回答
3
printf("%d.%.2d", x / 100, x % 100);
于 2013-08-27T12:52:23.390 回答
2

您可以直接使用printf 而不使用 float

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));
于 2013-08-27T12:52:37.803 回答
0

具有 int x1000 精度 1234123 -> 1234.123

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

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

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
...
于 2020-04-17T06:16:12.093 回答