如何解决如何防止打印时浮点变量显示为科学计数法
我正在使用“(float)$ val”进行某些计算,但是却使用了一些小数值-0.00000025478625 (浮动)-0.00000025478625得出-2.5479E-70, 我需要与-0.00000025478625相同的值,而不会影响其他情况。 如何防止这种转换?
解决方法
我认为您误解了您的浮动代表。值FNR>5{
实际上仍然是科学表示形式的浮点值。
这实际上意味着您的价值很小,因此出于可读性原因,它以这种格式表示。要阅读它,您可以用以下数字乘以10 -2.5479E-70
的幂来代替E
。因此,这意味着您的浮点数以70个零开头(我不会在此处写下)。
例如,-2.5479 * 10^(-70)
将是-5.47E-4
,与-5.47 * 10^(-4)
相同,结果是-5.47/10000
。
此外,对于印刷,您的价值也已四舍五入。在内部,它仍然使用精确值。因此,如果您在进一步评估中使用此数字,则不会损失任何准确性。
,这是浮点数的科学表示法。因此,如果要格式化,则应使用 number_format()函数。 在下面的示例中,第二个参数将告诉您所需的精度。 因此,按照您的示例,您应该使用14。
尝试一下:
$var = number_format((float)-0.00000025478625,14);
print($var);
,
要添加到Manish's answer中的内容。
请注意,PHP中的floating point numbers具有limited precision:
例如:
<?php
echo number_format((float) 0.0000000000000000000000004,50);
甚至
<?php
echo sprintf('%f15.50',(float) 0.0000000000000000000000004);
您会得到类似这样的信息(取决于系统):
0.00000000000000000000000040000000000000001539794790
这不是要打印的原始浮点数。
您永远不能指望浮点数的准确性。处理它们的最好方法是始终将它们存储为字符串,直到需要进行一些计算为止。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。