3 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
我認(rèn)為您誤解了浮動的表示。該值-2.5479E-70
實(shí)際上仍然是科學(xué)表示中的浮點(diǎn)值。
這實(shí)際上意味著您的值非常小,因此出于可讀性原因,它以這種格式表示。要閱讀它,您可以將 替換E
為以下數(shù)字的 10 次方乘積-2.5479 * 10^(-70)
。所以這意味著你的浮點(diǎn)數(shù)前面有 70 個(gè)零(我不會在這里寫下來)。
例如-5.47E-4
, which 與的結(jié)果-5.47 * 10^(-4)
相同。-5.47/10000
-0.000547
此外,對于打印,您的值已四舍五入。在內(nèi)部它仍然使用確切的值。因此,如果您在進(jìn)一步評估中使用這個(gè)數(shù)字,您不會失去任何準(zhǔn)確性。

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
這就是浮點(diǎn)數(shù)的科學(xué)計(jì)數(shù)法。所以,如果你想格式化,那么你應(yīng)該使用number_format()函數(shù)。下面的示例第二個(gè)參數(shù)將告訴您需要什么精度。因此,根據(jù)您的示例,您應(yīng)該使用 14。
嘗試這個(gè):
$var = number_format((float)-0.00000025478625, 14); print($var);

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊
請注意PHP 中的浮點(diǎn)數(shù)精度有限:
例如:
<?php echo?number_format((float)?0.0000000000000000000000004,?50);
甚至
<?php printf('%f15.50',?(float)?0.0000000000000000000000004);
你會得到這樣的結(jié)果(取決于系統(tǒng)):
0.00000000000000000000000040000000000000001539794790
這并不完全是要打印的原始浮點(diǎn)數(shù)。
你永遠(yuǎn)不能指望浮點(diǎn)數(shù)的準(zhǔn)確性。處理它們的最佳方法是始終將它們存儲為字符串,直到您需要完成一些計(jì)算為止。
- 3 回答
- 0 關(guān)注
- 259 瀏覽
添加回答
舉報(bào)