我的数据库中有两个数字,我想用intval()
和bcdiv
函数减去。我不确定为什么其中一个数字来自string
另一个是float
这是两个数字的var_dump
number1: float(0.11037128)
number2: string(10) "0.19902165"
我正在尝试执行的功能
$result = $number1 - $number2;
// var_dump($result) return float(-0.08865037)
$res->result = bcdiv(intval($number1 - $number2), 100000000, 8 ));
$res->save();
我想要存储此结果的列是DECIMAL(20,8)。
没有错误,没有错误。页面正常重新加载。除此结果外,其他所有内容都保存在数据库中。
我正在使用Laravel框架,这是在我的控制器中。有什么想法吗?
答案 0 :(得分:1)
bcdiv 的操作数排除" scale"必须是字符串 也许这是一个问题
答案 1 :(得分:1)
如果你正在做
$number1 = 0.11037128;
$number2 = 0.19902165;
$res->result = bcdiv(intval($number1 - $number2), 100000000, 8 ));
肯定你只会获得0.00000000
。
根据intval()
的{{3}},它从数字中选择整数值。因此,在intval($number1 - $number2)
之后,您将获得0
,因此您将0.00000000
作为bcdiv()
输出。
我用过的用例
$number1 = 10.11037128; // Changed this number
$number2 = 0.19902165;
var_dump(bcdiv(intval($number1 - $number2), 100000000, 8 ));
,输出为
string(10) "0.00000009"
<强>被修改强>
如果您遇到数字问题,比如获取字符串类型等,请尝试按如下方式对它们进行类型转换。
$number1 = (float) 10.11037128;
$number2 = (float) 0.19902165;