没有正确显示价格

时间:2018-04-18 15:25:19

标签: php codeigniter

我的数据库中的产品价格为美元。

我也有不同的货币。

USD = 1,000000 欧元= 0,807101

我对该产品的价格为150.50,但总体上显示为150.00。我不知道原因。

<span><?php echo get_tour_currency_price($tour_data[0]->tour_lowest_price,"sup");?></span>

当我更改货币时,它会给出121.00欧元。必须是121.46欧元。

以下是我用来通过检查当前费率来获得产品价格的代码。  什么是正确显示价格和转换率的解决方案?

    <?php
if (! defined ( 'BASEPATH' ))
    exit ( 'No direct script access allowed' );
function get_tour_currency_price($tour_price,$sup_html="") {
    $ci =& get_instance();
    $currency_text = "$";
    $currency_rate = 1;

    if ($ci->session->userdata ( 'currency_rate' )) {
       $currency_text = $ci->session->userdata ( 'currency_display_text' );
       $currency_rate = $ci->session->userdata ( 'currency_rate' );
    }
    if($sup_html){
        return "<sup>".$currency_text."</sup> ". number_format( floor($tour_price * $currency_rate),2, '.', '');
    }
    else{
        return $currency_text. number_format( floor($tour_price * $currency_rate),2, '.', '');
    }
}   
function get_tour_numeric_currency_price($tour_price,$sup_html="") {
    $ci =& get_instance();
    $currency_text = "$";
    $currency_rate = 1;

    if ($ci->session->userdata ( 'currency_rate' )) {
       $currency_text = $ci->session->userdata ( 'currency_display_text' );
       $currency_rate = $ci->session->userdata ( 'currency_rate' );
    }
    if($sup_html){
        return "<sup>".$currency_text."</sup>". floor ( ($tour_price * $currency_rate), 2, '.', '' );
    }
    else{
        return $currency_text. floor ( ($tour_price * $currency_rate), 2, '.', '' );
    }
}   

1 个答案:

答案 0 :(得分:0)

PHP floor(php.net/manual/en/function.floor.php)不接受其他参数。所以它正在做它应该做的,它删除了小数部分。你应该使用round(php.net/manual/en/function.round.php)