2013-08-19 50 views
-2

嗨,我有一些舍入问题。对于前:PHP不同的结果

$x = 100; 
$y = 4.2030; 

$result = round($x/$y, 2); 

$结果将是23.79

但现在

$result2 = round(23.79 * 4.2030, 2); 

$ RESULT2将是99.99,所以这是不正确。应该是100($ result2等于$ X)

如何解决它?

+0

显然,当舍入一个数字时,你会失去精度。 round($ x/y)!= $ x/$ y – Qwerty

+0

为什么这应该是100 ... 23.79 * 4.2030 = 99.98937四舍五入到小数点后两位数应该会给你99.99 – Orangepill

+3

'23.79 * 4.2030 = 99.989370 '如果你需要一个精确的*值来进行进一步的计算,你应该存储* un * -rounded值,并且只显示它。 – Sammitch

回答

1

您的回合精度为小数点后两位。如果您想获得完整的数字,你需要忽略精度参数:

$result2 = round(23.79 * 4.2030); 

注:较低的精度参数,更准确的结果将是从实际效果。

您还可以使用ceil()floor()如果你正在寻找舍在特定方向(ceil()会总结,会floor()向下取整)。