如何在C ++中格式化数字?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在C ++中格式化数字?相关的知识,希望对你有一定的参考价值。

我想用#。###。### type在C ++中格式化我的输出。例如:我有一个名为num = 123456789的int数字现在我想将它格式化为123.456.789作为我的输出。我怎么能用C ++做到这一点?谢谢你的帮助

例1:输入:

int a = 12345

预期产量:

a = 12.345

例2:输入:

int a = 123456

预期产量:

a = 123.456

例3:输入:

int a = 1234567

预期产量:

a = 1.234.567
答案

您通常通过在打印之前设置正确的区域设置来完成此操作。大多数情况下,“正确”的语言环境不是您(程序员)选择的语言环境,而是用户选择的语言环境。为此,您使用没有名称的区域设置:

#include <iostream>
#include <vector>

int main()  
    std::cout.imbue(std::locale(""));

    std::vector<int> values  123456789, 12345, 123456, 1234567 ;

    for (auto v : values)
        std::cout << v << "\n";

在我的机器上(配置为英语/美国语言环境),这会产生如下输出:

123,456,789
12,345
123,456
1,234,567

如果您的机器配置为使用.而不是,作为千位分隔符的区域设置,那就是您应该得到的。如果您需要确保无论用户的意愿如何都能得到它(请三思,但......),您可以通过明确指定区域设置来实现。例如,如果我使用:std::cout.imbue(std::locale("DE"));,我得到的输出就像你要求的那样:

123.456.789
12.345
123.456
1.234.567

有关可用语言环境以及要使用的名称的信息,请参阅编译器的文档。

以上是关于如何在C ++中格式化数字?的主要内容,如果未能解决你的问题,请参考以下文章

如何在C ++中将字节数组中的整数转换为数字

如何在C中的两个数字之间生成随机数? (内核)[重复]

如何在C ++中格式化数字?

如何在C中划分愚蠢的大数字

C语言习题如何在 C 中不使用任何分号打印从 1 到 N 的数字?

数字字符串的最后一个字符被删除,如何在 C 中解决这个问题?