簡體   English   中英

在PHP中移動小數點的最佳方法是什么

[英]What is the best way to move decimal point in PHP

我正在做一個可以用信用卡付款的項目。 我有從我得到的“價格”預訂系統,然后它將這個價格發送到商家在線支付頁面。 我的問題是預訂系統以十進制發送價格。 123.45 但是商家只接受這種格式: 12345 收到此格式后,它會自動添加小數點。

我需要轉換這個“價格”,不帶小數點。 換句話說,將其向右移動。 最好的功能或解決方案是什么?

現在我正在使用round()函數並添加兩個零 (00)。 但這種方式只有在我真的使用四舍五入的價格的情況下。

$price = $_POST['price'];

$price = round($price) . '00';

我希望輸出123.4512345 其他示例123.0012300

小心......你可能會失去精確度。 我不得不改用 bcmul()

 $version=22.0220;
 $int1=(int)($version*10000); // $int1 is 220219 (oops)
 $int2=(int)(bcmul($version,10000)); // $int2 is 220220 (correct)
<?php
   $withoutDecimal = $withDecimal * 100;
?>

對於那些需要更靈活解決方案的人。 例如,比特幣有 8 位小數,美元 - 2

function price_minor_units($dollars, $decimals = 2)
{
    return $dollars * (10 ** $decimals);
}

function price_major_units($cents, $decimals = 2){
    return $cents / (10 ** $decimals);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM