我的数据库中的产品价格为美元。
我也有不同的货币。
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, '.', '' );
}
}
答案 0 :(得分:0)
PHP floor(php.net/manual/en/function.floor.php)不接受其他参数。所以它正在做它应该做的,它删除了小数部分。你应该使用round(php.net/manual/en/function.round.php)