0

在 PHP 中,我正在编写一个应用程序,它需要精确到货币小数点右边的 2 位数字(例如:我关心1.23 === 1.23但没有更多的右侧数字)。

我知道浮点数通常被认为是不好的做法,因为基于从小数点右边从 2 到 10 转换的性质,它们的值不精确。但是,在我对处理货币值的最佳实践的研究中,我看到了一些论点,即如果您需要大于整数值的精度,浮点数并不好。我显然不需要比整分值更高的精度。

那么,我的问题是:

  1. 是否值得付出额外的努力将值存储为与bcmath库一起使用的字符串?
  2. 如果使用bcmath库,我应该将 MySQL 数据库中的值存储为字符串还是decimalMySQL 支持?

谢谢!

4

2 回答 2

0

进一步挖掘后,我在是否应该使用 BCMath 获得大约 1,2 或 3 位小数的值?

根据给定帖子上接受的答案,浮点数不能保证小数点的任何精度。

至于数据库中的存储,似乎将其存储为字符串将是最简单的选择,因为bcmathlib 可以使用字符串。

于 2016-05-17T16:35:28.850 回答
0

使用它来修剪到小数点后两位而不四舍五入。

<?php
$a = 12.37675;
$a = floor($a * 100) / 100; // 12.37
echo $a;

或者

<?php

function dollar($value) {
    return floor($value * 100) / 100;
}

$a = 12.37675;
echo dollar($a);
于 2016-05-17T16:44:36.243 回答