PHP中无法将字符串转换为浮点数 - Laravel 5.2

3
我有一个包含值的隐藏字段。由于它是一个隐藏字段,我的值是一个字符串。在我的数据库中,该值以2位小数为精度保存为十进制字段。 视图
<tr class="grand-total">
   <th>Total incl. 21% BTW:</th>
   <?php $total = number_format($cartTotal, 2, ',', '') ?>
    <td><strong class="grey-color">&euro;{{$total}}</strong></td>
 </tr>

 <input type="hidden" name="total" value={{$total}}>

控制器

例如,当我的总价为10.95欧元时,我只得到了10.00欧元。

我尝试过的方法:

(float)$request->total

floatval($request->total)

floatval($request->total * 1.00)

但是所有这些都会返回10欧元。

你的总价是 10.95 还是 10,95 - Aurel
"10,95" 是无效的指定。已更改为 "10.95" 作为唯一有效的读数。编辑待处理。 - Peter David Carter
2个回答

4
尽管这并没有直接回答问题,但它确实以更长远的方式解决了它。
考虑将货币数量存储为不带小数点的形式——因此在您的数据库中 $10.00 实际上存储为 1000
您还可以使用PHP内置函数,例如money format,同时设置本地货币,以解决这个问题。
参见:将货币值存储为美分/次要单位有哪些缺点?

1
这是一个很好的答案。在开发我的应用程序时,我曾考虑过它。但由于我的计算会相当复杂,我最终没有选择它。不过也许下次我应该尝试一下。 - Christophvh
1
我认为,计算越复杂,就应该尽量避免使用浮点数,这只是我的个人看法(请原谅我这句话的双关语)。 - Chris

2

您必须提供一个浮点数,使用小数点将整数和小数部分分开,而不是逗号,因此您必须输入10.95而不是10,95

如果仍然想使用逗号,显然可以使用str_replace函数:

$myNumber = floatval(str_replace(',', '.', $myNumber));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接