1

在 bash 终端中考虑以下命令:

echo 0.00027849383762390271 | awk '{print sprintf("%.20f",$1)}'

我连接到两台机器。

第一个是 GNU Bash 4.15 版和 GNU Awk 3.1.7 版。上面的命令返回预期的结果:0.00027849383762390268(尽管最后两位数字与我的初始数字不同)

第二台机器有 GNU Bash 3.2.39 版和 GNU Awk 3.1.5 版。上面的命令返回:0,00000000000000000000(逗号后 20 个零)。注意“,”而不是“。” .

为什么第二台机器的行为与第一台机器不同,如何使其表现得像第一台机器?

4

1 回答 1

3

两台机器之间的区域设置不同。LC_ALL=C在执行这两个命令之前设置(或您想要的任何语言环境)并查看https://www.gnu.org/software/gawk/manual/html_node/Locale-influences-conversions.html了解更多信息。

于 2016-05-02T19:23:54.423 回答