我使用bcmath
进行计算,我想将一些数字四舍五入到n
小数位。现在,我知道足够避免浮点数了,但是我想知道的是以下示例是否安全和/或是否有更好的方法?
$number = '123.456'; // number to round as string
$roundedNumber = (string) round($number, 2); // round and cast
// calculations using bcmath continue here...
我认为,是的,我已经进行了一些实验,到目前为止,它始终返回预期的结果,但是我想第二点意见,因为在某些情况下,我并非100%肯定要浮起来的字符串然后再浮回到字符串将不会输出不需要的结果。
或者有更好的方法吗?
编辑:在您回答之前:
bc*
函数在指定第三个参数时不会四舍五入,它们只会修剪输出。
number_format
不允许选择舍入模式,因此已淘汰
编辑:我认为什么安全?
给定数字作为字符串和舍入模式,该函数将始终输出正确/预期的结果并且不受强制转换为浮点数的影响吗?
我想我担心的是:
我将数字说12.345作为字符串提供给round
函数,将其强制转换为float
,然后我的数字不再是12.345,可能是12.345xxxx,因为我们都知道float
可以内部代表。我担心这会影响舍入输出。我相信当我将弦号转换为12.345时不会有任何危害,它始终是'12 .345',而不是'12 .345 ....'对吧?