加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 06:22:35 所属栏目:大数据 来源:网络整理
导读:我试图从十进制数中删除尾随零. 例如:如果输入的数字是0.0002340000,我希望输出为0.000234 我使用sprintf(“%g”,$number),但这大部分都有效,除非有时它将数字转换为带有E-的指数值.我怎样才能将它显示为完整的十进制数? 解决方法 数字没有尾随零.仅当您
我试图从十进制数中删除尾随零.

例如:如果输入的数字是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//;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读