【问题标题】:How to preserve number of decimal places in perl after multiplication乘法后如何在perl中保留小数位数
【发布时间】:2021-02-11 16:39:34
【问题描述】:

我在 Perl 中有一个浮点数,乘以负整数后,所有尾随零都会自动删除。但是我仍然需要那些额外的零。

例子:

my $float = 1.40000;
my $multiply = -1 * $float;
print "Negative number: $multiply"; //-1.4

有什么方法可以得到-1.40000

【问题讨论】:

  • 浮点数没有精确表示,它与它们在内存中的存储方式有关。如果要完全保留零,请使用字符串。例如。 my $float = "-1.40000.
  • 没有小数位可以保留。浮点数存储为1.<53 binary digits> * 2^<exponent> (1.011001100110011001100110011001100110011001100110011 * 2^0,在这种情况下。是的,4/10 在二进制中是周期性的,就像 1/3 在十进制中是周期性的。)

标签: perl


【解决方案1】:

您需要使用printf 格式化您的输出。

printf( "Negative number: %.4f\n", $multiply );

通过perldoc -f printfhere 了解有关printf 的更多信息。

【讨论】:

  • 也许添加一个关于 sprintf() 的简介,这样该号码也可以原封不动地保留以供将来的操作使用? my $num = sprintf("%.4f", -1 * $float);
  • @stevieb 从技术上讲,使用任一操作时,数字在内部根本不会发生变化。只有当它被打印时,零的缺失才会明显,只有当它被打印时,它才是相关的。所以不,sprintf 与问题无关。
猜你喜欢
  • 2022-10-12
  • 2010-11-20
  • 2023-03-22
  • 2022-12-07
  • 2020-09-11
  • 2023-03-05
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
相关资源
最近更新 更多