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

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

數字左側零的情況下的精度問題

數字左側零的情況下的精度問題

PHP
翻閱古今 2021-05-07 18:16:32
我的功能如下:static function applyPrecision($vals) {        $originalNumber = $vals['reading'];        if (is_numeric($originalNumber)) {            $precision = ($vals['precision'] != '' || $vals['precision'] != 0) ? $vals['precision'] : 4;            $factor = pow(10, $precision);            $multipliedNumber = $originalNumber * $factor;            //$integerMultipliedNumber = floor($multipliedNumber);            $var = explode(".", $multipliedNumber);            $integerMultipliedNumber = $var[0];            return $result = (float) ($integerMultipliedNumber / $factor);        } else {            return $originalNumber;        }    }使用此方法,我們可以對數字應用精度,而無需四舍五入,例如:-給定45.12345678精度為3,則輸出為45.123但是,如果像這樣的數字:: 45.1000000,精度為3,則輸出僅像45.1一樣,零被跳過了,有什么辦法可以避免這種情況嗎?
查看完整描述

2 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

如果這是關于浮點數的問題,則14.1與14.100相同。如果這是關于字符串的問題,那么您應該只使用substr()。在下面的答案中,$number要刪減的$precision位數是多少,要保留的小數位數是多少。


$number = (string) $number;

$temp = $precision <= 0 ? 0 : $precision+1;

return substr($number, 0, strrpos($number, '.') + $temp);


查看完整回答
反對 回復 2021-05-14
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

為了獲得浮點數的前3個子位數而不進行舍入,您必須使用,float($number*1000/1000)然后將其與number_format(float($number*1000/1000),3)


例子


$var =0.35489;

$var2 = number_format(floor($var * 1000) / 1000,3);

echo $var2;

輸出


0.354


例子2


$var =0.3000;

$var2 = number_format(floor($var * 1000) / 1000,3);

echo $var2;

輸出2


0.300


如果您的精度是可變的,那么您將不得不使用 pow(10,$precision)


范例3


$var =0.3000;

$precision =3;

$var2 = number_format(floor($var * pow(10,$precision)) / pow(10,$precision),3);

輸出3


0.300


查看完整回答
反對 回復 2021-05-14
  • 2 回答
  • 0 關注
  • 159 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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