在PHP中设置浮点数的精度

时间:2013-11-09 11:51:52

标签: php precision rounding

我从数据库中获取了一个号码,这个号码可能是floatint

我需要将数字的小数精度设置为3,这使得数字不超过(关于小数)5.0201518845.756

使用PHP

round($number, $precision)

我发现了一个问题:

它将数字四舍五入。我需要一个函数来只缩短小数,而不改变round( )似乎不遵循的值。

5 个答案:

答案 0 :(得分:17)

您可以使用number_format()来实现此目标:

echo number_format((float) $number, $precision, '.', ''); 

这会将1518845.756789转换为1518845.757

但是如果您只想将小数位数缩短为3, 回合,那么您可以执行以下操作:

$number = intval($number * ($p = pow(10, $precision))) / $p;

一开始可能看起来令人生畏,但这个概念非常简单。你有一个数字,你将它乘以10 3 (它变为1518845756.789),将其转换为整数,以便删除3位小数后的所有内容(变为1518845756) ,然后将结果除以10 3 (变为1518845.756)。

Demo

答案 1 :(得分:10)

它的声音像floor,带小数。所以你可以试试像

这样的东西
floor($number*1000)/1000

答案 2 :(得分:2)

如果我理解正确,你不会想要进行舍入,你希望精度为3。

所以我的想法是使用number_format()获得4的精度,然后删除最后一位数字:

$number = '1518845.756789';
$precision = 3;

echo substr(number_format($number, $precision+1, '.', ''), 0, -1);

将显示:

1518845.756

而不是:

1518845.757

链接:number_format()substr()

答案 3 :(得分:1)

有关更多详细信息,请参见this answer

let toolBarRect = CGRect(x: 0, y: 0, width: self.view.frame.width, height: 44)
let toolBar = UIView(frame: toolBarRect)
toolBar.backgroundColor = .lightGray

let nextButton = UIButton()
nextButton.setTitleColor(.black, for: .normal)
nextButton.setTitle("Next", for: .normal)
nextButton.addTarget(self, action: #selector(self.onNextButtonTouch), for: .touchUpInside)
nextButton.translatesAutoresizingMaskIntoConstraints = false
toolBar.addSubview(nextButton)

NSLayoutConstraint.activate(
    [
        nextButton.heightAnchor.constraint(equalToConstant: Constants.keyboardToolBarHeight),
        nextButton.trailingAnchor.constraint(equalTo: toolBar.trailingAnchor, constant: -16),
        nextButton.centerYAnchor.constraint(equalTo: toolBar.centerYAnchor, constant: 0)
    ]
)

self.yourTextField.inputAccessoryView = toolBar

答案 4 :(得分:-1)

$num=5.1239;
$testnum=intval($num*1000)/1000;
echo $testnum; //return 5.123