【问题标题】:adding varchar with decimals php添加带小数的varchar php
【发布时间】:2012-01-24 08:58:35
【问题描述】:
  int    varchar
+======+==========+
| id   | amount   |
+======+==========+
| 1    | 1.40     |
| 2    | 2.40     |
| 3    | 3.40     |
+======+==========+


$res += $row['amount'];
// $res = 6


$res += (float)$row['amount'];
// $res = 6

为什么我不能添加它们?

【问题讨论】:

  • 嗯?您是否要在amount 中添加所有金额? $res=6 是真的吗?
  • 只需选择您的文本并按工具栏中的{} 按钮将其标记为代码。不需要 <br>s。
  • @Paul 是的,我正在添加所有这些
  • 好的,在你尝试转换到任何东西之前去掉逗号......否则转换将在它遇到的第一个非数字或小数点字符处停止......如果你' d 首先向我们展示了真实的数值(而不是 1.4、2.4、3.4),您会更快地得到答案
  • 您不应将数值作为VARCHAR 存储在数据库中。将它们存储为小数,这就是它们的用途。那也可以避免这个问题。

标签: php floating-point type-conversion addition


【解决方案1】:

根据你的var_dump结果string(8) "1,000.00" string(8) "2,391.45" string(8) "2,005.31",这是你数据的问题。

(float)"2,391.45" 会将字符串 string("2,391.45") 转换为 float(2)

【讨论】:

    【解决方案2】:

    在 PHP 中浮点数不能包含逗号:http://php.net/manual/en/language.types.float.php

    LNUM          [0-9]+
    DNUM          ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
    EXPONENT_DNUM [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM})
    

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 2023-03-13
      • 1970-01-01
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多