Perl – 删除没有指数值的尾随零

Perl – 删除没有指数值的尾随零,第1张

概述我试图从十进制数中删除尾随零. 例如:如果输入的数字是0.0002340000,我希望输出为0.000234 我使用sprintf(“%g”,$number),但这大部分都有效,除非有时它将数字转换为带有E-的指数值.我怎样才能将它显示为完整的十进制数? 数字没有尾随零.仅当您表示十进制数字(字符串)时,才会出现尾随零.所以第一步是将数字转换为字符串,如果它还没有. my $s = sprintf 我试图从十进制数中删除尾随零.

例如:如果输入的数字是0.0002340000,我希望输出为0.000234

我使用sprintf(“%g”,$number),但这大部分都有效,除非有时它将数字转换为带有E-的指数值.我怎样才能将它显示为完整的十进制数?

解决方法 数字没有尾随零.仅当您表示十进制数字(字符串)时,才会出现尾随零.所以第一步是将数字转换为字符串,如果它还没有.

my $s = sprintf("%.10f",$n);

(解决方案是假设使用OP的输入,他的输入似乎有10个小数位.如果你想要更多的数字出现,使用你想要出现的小数位数而不是10.我认为这是显而易见的.如果你想像@asjo一样荒谬,如果你想确保不丢失任何你没有失去的精度,那么对于双打使用324位小数.)

然后你可以删除尾随零.

$s =~ s/0+\z// if $s =~ /\./;$s =~ s/\.\z//;

要么

$s =~ s/\..*?\K0+\z//;$s =~ s/\.\z//;

要么

$s =~ s/\.(?:|.*[^0]\K)0*\z//;
总结

以上是内存溢出为你收集整理的Perl – 删除没有指数值的尾随零全部内容,希望文章能够帮你解决Perl – 删除没有指数值的尾随零所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1250477.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存