亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何防止浮點變量在打印時顯示為科學記數法

如何防止浮點變量在打印時顯示為科學記數法

PHP
慕田峪7331174 2024-01-19 10:09:10
我使用“(float)$val”進行一些計算,但是對于像-0.00000025478625 (float)-0.00000025478625這樣的小數值,結果是-2.5479E-70,我需要與-0.00000025478625相同的值,而不影響其他值場景。如何防止這種轉換?
查看完整描述

3 回答

?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

我認為您誤解了浮動的表示。該值-2.5479E-70實際上仍然是科學表示中的浮點值。

這實際上意味著您的值非常小,因此出于可讀性原因,它以這種格式表示。要閱讀它,您可以將 替換E為以下數字的 10 次方乘積-2.5479 * 10^(-70)。所以這意味著你的浮點數前面有 70 個零(我不會在這里寫下來)。

例如-5.47E-4, which 與的結果-5.47 * 10^(-4)相同。-5.47/10000-0.000547

此外,對于打印,您的值已四舍五入。在內部它仍然使用確切的值。因此,如果您在進一步評估中使用這個數字,您不會失去任何準確性。


查看完整回答
反對 回復 2024-01-19
?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

這就是浮點數的科學計數法。所以,如果你想格式化,那么你應該使用number_format()函數。下面的示例第二個參數將告訴您需要什么精度。因此,根據您的示例,您應該使用 14。

嘗試這個:

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


查看完整回答
反對 回復 2024-01-19
?
慕森王

TA貢獻1777條經驗 獲得超3個贊

請注意PHP 中的浮點數精度有限:

https://img1.sycdn.imooc.com/65a9d9f40001d25909140398.jpg

例如:

<?php
echo?number_format((float)?0.0000000000000000000000004,?50);

甚至

<?php
printf('%f15.50',?(float)?0.0000000000000000000000004);

你會得到這樣的結果(取決于系統):

0.00000000000000000000000040000000000000001539794790

這并不完全是要打印的原始浮點數。

你永遠不能指望浮點數的準確性。處理它們的最佳方法是始終將它們存儲為字符串,直到您需要完成一些計算為止。


查看完整回答
反對 回復 2024-01-19
  • 3 回答
  • 0 關注
  • 229 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號