gpt4 book ai didi

c++ - 在 C/C++ 中将天文数字大的数字转换为人类可读的形式

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:57:47 25 4
gpt4 key购买 nike

我的程序打印出巨大的数字 - 例如 100363443,高达一万亿 - 并且有点难以阅读它们,所以我想以易于阅读的形式打印任何数字。

现在我用

printf ("%10ld", number);

格式

我希望使用 printf 得到结果数字。我的大部分代码是 C++ 但我不想引入 std::cout,因为我已经有 printf

谢谢

最佳答案

在 printf 格式字符串中使用非标准的 撇号 标志,如果你有那个选项可用并且不介意失去一点可移植性。

根据我的文档,' 标志可用于 POSIX自 1997 年以来的系统。

如果你在 Unix, Linux, Mac, ... 你应该没问题
如果您使用的是 Windows、DOS、iSeries、Android,...所有赌注都没有了(但也许您可以在系统中安装 POSIX 层)。

#include <locale.h>
#include <stdio.h>

int main(void) {
long int x = 130006714000000;

setlocale(LC_NUMERIC, "en_US.utf-8"); /* important */
while (x > 0) {
printf("# %%'22ld: %'22ld\n", x); /* apostrophe flag */
x *= 2; /* on my machine, the Undefined Behaviour for overflow
// makes the number become negative with no ill effects */
}
return 0;
}

在我的系统上这个程序产生:

# %'22ld:    130,006,714,000,000
# %'22ld: 260,013,428,000,000
# %'22ld: 520,026,856,000,000
# %'22ld: 1,040,053,712,000,000
# %'22ld: 2,080,107,424,000,000
# %'22ld: 4,160,214,848,000,000
# %'22ld: 8,320,429,696,000,000
# %'22ld: 16,640,859,392,000,000
# %'22ld: 33,281,718,784,000,000
# %'22ld: 66,563,437,568,000,000
# %'22ld: 133,126,875,136,000,000
# %'22ld: 266,253,750,272,000,000
# %'22ld: 532,507,500,544,000,000
# %'22ld: 1,065,015,001,088,000,000
# %'22ld: 2,130,030,002,176,000,000
# %'22ld: 4,260,060,004,352,000,000
# %'22ld: 8,520,120,008,704,000,000

关于c++ - 在 C/C++ 中将天文数字大的数字转换为人类可读的形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15621215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com