首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Linux将整数转换为金额字段

Linux将整数转换为金额字段
EN

Stack Overflow用户
提问于 2017-04-30 04:28:11
回答 2查看 46关注 0票数 0

我有一个简单的请求,但在网上找不到任何关于它的东西。

这是针对Linux bash脚本的:

var1=123456

我希望输出如下所示:

1,234.56作为金额字段(始终为2个小数)

我尝试了不同的printf变体,但没有成功。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-04-30 05:22:08

它看起来非常像将数字转换为货币格式。考虑以下printf方法:

代码语言:javascript
代码运行次数:0
运行
复制
LC_ALL=en_US.UTF-8 printf "%'.2f\n" ${var1%??}"."${var1:(-2)}

输出:

代码语言:javascript
代码运行次数:0
运行
复制
1,234.56

"%'.2f\n"格式中的'符号提供十进制转换

我要指出的是,上面的内容取决于您当前的LC=ALL/LC_NUMERIC语言环境变量(表示小数点、千位组分隔符)

票数 0
EN

Stack Overflow用户

发布于 2017-04-30 06:41:16

另一个正则表达式解决方案似乎可以工作到999,999.99,始终保留两位小数:

代码语言:javascript
代码运行次数:0
运行
复制
$ perl -pe 's/(.*?)(.{1,3})(.{2}$)/\1,\2.\3/;s/^,//' <<<"1"
1
$ perl -pe 's/(.*?)(.{1,3})(.{2}$)/\1,\2.\3/;s/^,//' <<<"12"
12
$ perl -pe 's/(.*?)(.{1,3})(.{2}$)/\1,\2.\3/;s/^,//' <<<"123"
1.23
$ perl -pe 's/(.*?)(.{1,3})(.{2}$)/\1,\2.\3/;s/^,//' <<<"1234"
12.34
$ perl -pe 's/(.*?)(.{1,3})(.{2}$)/\1,\2.\3/;s/^,//' <<<"12345"
123.45
$ perl -pe 's/(.*?)(.{1,3})(.{2}$)/\1,\2.\3/;s/^,//' <<<"123456"
1,234.56
$ perl -pe 's/(.*?)(.{1,3})(.{2}$)/\1,\2.\3/;s/^,//' <<<"1234567"
12,345.67
$ perl -pe 's/(.*?)(.{1,3})(.{2}$)/\1,\2.\3/;s/^,//' <<<"12345678"
123,456.78
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43700165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档