printf, how to insert decimal point for integer

后端 未结 4 1348
一整个雨季
一整个雨季 2021-01-19 11:14

I have an UINT16 unsigned integer of say

4455, 312, 560 or 70.

How to use printf to insert a decimal point before the last two

相关标签:
4条回答
  • 2021-01-19 11:30

    with a int x1000 precision 1234123 -> 1234.123

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

    if you need to round to 2 decimal

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

    only tested with positive

    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
    ...
    
    0 讨论(0)
  • 2021-01-19 11:37

    %.2d could add the extra padding zeros

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

    For example, if n is 560, the output is: 5.60

    EDIT : I didn't notice it's UINT16 at first, according to @Eric Postpischil's comment, it's better to use:

    printf("%d.%.2d", (int) (x/100), (int) (x%100));
    
    0 讨论(0)
  • 2021-01-19 11:38
    printf("%d.%.2d", x / 100, x % 100);
    
    0 讨论(0)
  • 2021-01-19 11:48

    You can use printf directly with out using float

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

    %02d means right align with zero padding.

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

    EDIT:
    by seeing comment from @ Eric Postpischil , it's better to use like this.

    printf("%d.%02d", (int) (num/100), (int) (num%100));
    
    0 讨论(0)
提交回复
热议问题