Php 如何防止打印时浮点变量显示为科学符号

Php 如何防止打印时浮点变量显示为科学符号,php,floating-point,type-conversion,precision,Php,Floating Point,Type Conversion,Precision,我使用“(float)$val”进行一些计算,但对于一些十进制值,如-0.00000025478625 (浮动)-0.00000025478625导致-2.5479E-70, 我需要与-0.00000025478625相同的值,而不影响其他场景。 如何防止这种转换?这是浮点数的科学表示法。因此,如果要格式化,则应使用number\u format()函数。 下面的示例中,第二个参数将告诉您所需的精度。 因此,根据您的示例,您应该使用14 试试这个: $var = number_format((f

我使用“(float)$val”进行一些计算,但对于一些十进制值,如-0.00000025478625 (浮动)-0.00000025478625导致-2.5479E-70, 我需要与-0.00000025478625相同的值,而不影响其他场景。
如何防止这种转换?

这是浮点数的科学表示法。因此,如果要格式化,则应使用number\u format()函数。 下面的示例中,第二个参数将告诉您所需的精度。 因此,根据您的示例,您应该使用14

试试这个:

$var = number_format((float)-0.00000025478625, 14);
print($var);

我想你误解了你的花车。值
-2.5479E-70
实际上在科学表示中仍然是一个浮点值

这实际上意味着您的值非常小,因此出于可读性原因,它以这种格式表示。阅读时,您可以将
E
替换为以下数字乘以10的幂-2.5479*10^(-70)。这意味着你的浮点数前面有70个零(我不会在这里写)

例如
-5.47E-4
将是
-5.47*10^(-4)
,这与
-5.47/10000
相同,导致
-0.000547

此外,对于打印,您的值是四舍五入的。在内部,它仍然使用精确的值。因此,如果您在进一步评估中使用此数字,您不会失去任何准确性。

需要补充的内容

请注意,在PHP中有:

例如:


你担心吗,因为当你打印它时它会这样做?这不是
十六进制值,这是浮点的科学表示法。浮点就是浮点。
echo sprintf('%17.15f',$var)只有在知道小数位数有固定限制的情况下,才能执行此操作。否则,它的准确性永远无法指望。Float不是一个函数:)。它应该是(浮动)-0.00000025478625
0.00000000000000000000000040000000000000001539794790