c - 打印此浮点格式

标签 c printing floating-point formatting

Required format

观察上图,剩余贷款金额以一种非常独特的方式显示。它基本上是一个浮点值。当它没有浮点精度时,它显示为 $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/

相关文章:

python - 如何在循环中的值之间打印空格?

C++不正确的浮点运算

c - 如何保存typeof的结果?

html - 当打印 div 进入文本框时

java - 如何获取默认打印机属性设置

parsing - 为什么 C++ strtod 将 "708530856168225829.3221614e9"解析为 7.08530856168225898e+26 而不是 7.08530856168225761e+26?

android - 如何从 float 结果中删除小数?

C 比较运算符优先级

c - 仅磁盘写入,但 iotop 也显示读取

c - 来自 C 的 PLC 结构文本