簡體   English   中英

PHP number_format錯誤

[英]PHP number_format error

我有一個像這樣的字符串:

R$10,25

我需要將其轉換為:

10.25

我正在嘗試:

$value = 'R$10,20';
$value_subs = str_replace(array('R', '$'), '', $value);
$value_formated = number_format($value_subs, 2, ',', '.');

之后,我將$value_formated值與另一個值進行比較,例如:

$another_value = 20.40;
if($value_formated <= $another_value)
{
    //Error
}
else
{
    //Proceed
}

但是我收到錯誤A格式不正確的數值
如何實現呢? 請記住,我從客戶端收到了$value變量的$value ,因此,這里可以存在任何內容,但是如果不符合if($value_formated <= $another_value) ,我將通過它。

結合@Hayden Schiff的答案

<?php

    $value = 'R$10,20';
    $value_subs = str_replace(array('R', '$',','), array('','','.'), $value);
    $value_formated = floatval($value_subs);

    $another_value = 20.40;
    if($value_formated <= $another_value)
    {
        echo "Less or equal";
    }
    else
    {
        echo "Greater";
    }

更換,. 然后將結果解析為浮點數

逗號不是PHP中默認的小數點分隔符,這就是為什么只考慮整數部分的原因(因為逗號不被視為數字的一部分)。

要解決此問題,您需要將此逗號替換為一個點。

方式:

$str = strtr($str, ['R' => '', '$' => '', ',' => '.']);
echo number_format($str, 2, ',', '.');

注意:例如,如果要從原始字符串中刪除用作千位分隔符的點而不影響小數點分隔符,可以使用strtr代替str_replace以避免循環替換:

$str = strtr('R$100.000.000,25', ['R' => '', '$' => '', ',' => '.', '.' => '']);
echo number_format($str, 2, ',', '.');

暫無
暫無

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

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