观察上图,剩余贷款金额以一种非常独特的方式显示。它基本上是一个浮点值。当它没有浮点精度时,它显示为 $3000
当小数部分有 4 位时显示 2 个 float 。但是当小数部分只有 3 位时,3 位精度用于 float 。是否可以仅使用格式说明符来显示?我尝试了 %X.Yf
的多种组合,但没有任何效果。有什么想法吗?
最佳答案
虽然我同意对货币使用 float 不是最佳解决方案,但要获得所需的精度(点后始终为两位数),您可以使用 "%.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
Edit: To have adjustable precision you can use "%*f"
:
printf("123.456789 = %.*f\n", 3, 123.456789);
上面一行会打印
123.457
关于c - 打印此浮点格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11572758/