我有一个数字,需要添加一个小数来格式化.
这个数字保证在1000到999999之间(我已经用其他方式涵盖了其他可能性,这是我无法理解的).我需要在最后3位数之前加一个小数,例如:
1000 -> 1.000
23513 -> 23.513
999999 -> 999.999
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
dra*_*tun 44
而另一种有趣的方式;-)
my $num_3dec = sprintf '%.3f', $num / 1000;
Run Code Online (Sandbox Code Playgroud)
Pat*_*Pat 14
这是另一种解决方案,只是为了它的乐趣:
在Perl中,substr()可以是一个左值,它可以帮助你的情况.
substr ($num , -3 , 0) = '.';
Run Code Online (Sandbox Code Playgroud)
将在最后三位数之前添加一个点.
您还可以使用substr的四个参数版本(在注释中指出)来获得相同的效果:
substr( $num, -3, 0, '.' );
Run Code Online (Sandbox Code Playgroud)
我希望它比正则表达式解决方案更优雅/可读,但我相信它会抛弃任何不习惯将substr()用作左值的人.
Ada*_*kin 10
$num =~ s/(\d{3})$/.$1/
Run Code Online (Sandbox Code Playgroud)
这就是说:取一个3位数的块(必须锚定在字符串的END处)并用" ." 替换它们,然后用匹配的任何东西替换它们.