1

所需格式

观察上图,剩余贷款金额以一种非常独特的方式显示。它基本上是一个浮点值。当它没有浮点精度时,它显示为$3000当小数部分有 4 位时显示 2 个浮点。但是当小数部分只有 3 位时,3 位精度用于浮点。这是否可以仅使用格式说明符来显示?我尝试了很多组合,%X.Yf但没有任何效果。有任何想法吗?

4

1 回答 1

2

虽然我同意将浮点用于货币并不是最好的解决方案,但要获得所需的精度(始终在点后两位数),您可以使用"%.02f".

例子:

#include <stdio.h>

int main()
{
    printf(".0123456789 = %.02f\n", .0123456789);
    printf("0.123456789 = %.02f\n", 0.123456789);
    printf("01.23456789 = %.02f\n", 01.23456789);
    printf("012.3456789 = %.02f\n", 012.3456789);
    printf("0123.456789 = %.02f\n", 0123.456789);
    printf("01234.56789 = %.02f\n", 01234.56789);
    printf("012345.6789 = %.02f\n", 012345.6789);
    printf("0123456.789 = %.02f\n", 0123456.789);
    printf("01234567.89 = %.02f\n", 01234567.89);
    printf("012345678.9 = %.02f\n", 012345678.9);
    printf("0123456789. = %.02f\n", 0123456789.);
    return 0;
}

输出是:

.0123456789 = 0.01
0.123456789 = 0.12
01.23456789 = 1.23
012.3456789 = 12.35
0123.456789 = 123.46
01234.56789 = 1234.57
012345.6789 = 12345.68
0123456.789 = 123456.79
01234567.89 = 1234567.89
012345678.9 = 12345678.90
0123456789. = 123456789.00

编辑:要具有可调节的精度,您可以使用"%*f"

printf("123.456789 = %.*f\n", 3, 123.456789);

上面的行将打印

123.457
于 2012-07-20T06:02:21.753 回答