打印此浮点格式

时间:2012-07-20 04:08:18

标签: c printing floating-point formatting

Required format

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

1 个答案:

答案 0 :(得分: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