我正在使用货币输入。应使用小数点后两位数字。我试着输入铸造浮动和100,直到有人进入小数关口后超过两位数的正常工作相乘:消毒货币输入
// Returns 6999.8 instead of 6999
$cents = floatval('69.998') * 100;
然后我试图铸造结果为int,所以小数点后连续数字被忽略。它解决了上述问题('69 0.998' 变为6999),但创建一个具有浮动一个新的整数转换:
// Returns 6998 instead of 6999
$cents = intval(floatval('69.99') * 100);
我也算是地板(),但它触发同样的浮动问题,因为INTVAL()。
这是我在考虑使用:
$cents = intval((string)(floatval('69.99') * 100));
它工作在这两种情况下,但感觉就像一个黑客攻击和它的晚,我的头很痛,所以也许我缺少的东西在这里很明显。有一个更好的方法吗?
你为什么不只是四舍五入到最接近乘以100后的数字? –