我有一个带有MySQL数据库的CakePHP 1.3网站。问题是我有一些价格,双倍值,使用点作为小数分隔符存储,但我的应用程序前端应使用逗号显示它们。
有没有办法直接在DB中设置它,或者只是比str_replace EVERYWHERE更好的方法来实现这一点?那会很麻烦,对我来说这似乎是不好的做法。
提前谢谢!
答案 0 :(得分:1)
数据库中的小数是正确的 - 它是一个十进制用作小数。要显示,您应该使用number_format进行演示。
答案 1 :(得分:0)
技术上你可以在模型的afterFind处理程序中执行n str_replace并忘记它。
答案 2 :(得分:0)
$decimalNumberFromDb= 1234.56;
//
// French notation
//
$frenchNotation = number_format($decimalNumberFromDb, 2, ',', ' '); // Output: 1 234,56
//
// English Notation
//
$englishNotation = number_format($decimalNumberFromDb, 2, '.', ''); // Output: 1234.56
答案 3 :(得分:0)
数据库中的点不是分隔符,而是存储小数的方式。
你可以像这样做一个选择查询
select *, REPLACE(CAST(price AS CHAR), '.', ',') as price_formatted from products;
或者使用带有number_format
的其他格式的PHP显示它$price = 1300222.99;
echo "Original: ".$price.PHP_EOL;
echo "english/us: ".number_format($price,2).PHP_EOL;
echo "Dutch/german: ".number_format($price, 2, ',', '.').PHP_EOL;
echo "French: ".number_format($price, 2, ',', ' ').PHP_EOL;
echo "Swiss: ".number_format($price, 2, ',', '\'').PHP_EOL;
答案 4 :(得分:0)