【问题标题】:Laravel - How Convert Thousand Comma to Decimal NumberLaravel - 如何将千位逗号转换为十进制数
【发布时间】:2019-07-20 17:37:03
【问题描述】:

我输入了格式为 1,000.00 的货币格式

我想以十进制格式保存在数据库中,例如 1000.00

如何在控制器中更改,保存时会自动更改为十进制格式?

$num = '3,500.20';
$formattedNum = number_format($num,  3, '', '');
echo $formattedNum;

上面的代码转换为 3000 而不是 3500.20

【问题讨论】:

  • 你试过$result = str_replace(',', '', $num);吗?
  • 先使用 JavaScript 检查表单并提示用户输入正确的格式。这样你就不会弄乱用户的输入。您仍然需要在 PHP 中再次检查,但最好向用户询问正确的格式,而不是尝试正确解析它
  • 用空格替换逗号,str_replace(',', '', $num); 并将您的数据库列设为小数点后 2 位。 DECIMAL(10,2) 迁移期间。

标签: php laravel format currency number-formatting


【解决方案1】:

你可以使用 php 的str_replace 来得到你的结果:

<?php
     $num = '3,500.20';
     $formattedNum = str_replace(',', '', $num);
     echo $formattedNum;
?>

str_replace 函数将您的 ',' 替换为 '' 一个空白值, 要了解有关str_replace 的更多信息,您可以阅读here

【讨论】:

    【解决方案2】:

    例如,您可以删除带有str_replace(',', '', $num) 的逗号。

    但最好从您的输入中获得正确的值。

    输入格式不应影响 3500.20 的实际输入值,这看起来不是一个好习惯。

    number_format 也不是用于将字符串转换为数字,相反它可以从数字(整数/浮点数)中生成漂亮的字符串。

    【讨论】:

      【解决方案3】:

      您可以尝试 str_replace 以获得所需的结果:-

      $number = '3,500.20';
      $number = str_replace(',', '', $number);
      echo $number;
      

      输出 3500.20

      【讨论】:

        猜你喜欢
        • 2021-07-02
        • 2019-07-24
        • 2010-12-07
        • 2014-03-19
        • 1970-01-01
        • 1970-01-01
        • 2021-04-18
        • 1970-01-01
        • 2019-07-28
        相关资源
        最近更新 更多