我需要一个函数来检查数字是否有2位小数。
例如:
$number = '1.00'; // Valid
$number2 = '1'; // Not valid
$number3 = '1.000' //Not valid
答案 0 :(得分:2)
您可以这样检查:
Ok(c.toJson.prettyPrint)
您必须将变量转换为String,但这不是一个大问题。这样做:
$str = "1.23444";
print strlen(substr(strrchr($str, "."), 1));
答案 1 :(得分:1)
为什么你不会强迫他们使用类似的
来获得2位小数$original = 2;
$float = number_format($number, 2);
// echo $float = 2.00
我想如果你需要强制浮点只有2位小数,你可以做类似下面的事情。
$numbers = array(2.453, 3.35, 2.53, 1.636);
foreach($numbers as $number) {
if(strpos($number, '.') !== false) {
if(strlen($parts[1]) == 2) {
echo $number .' is valid!';
} else {
echo $number .' is NOT valid!';
}
}
}
以上是实现这一目标的一种方法,但还有很多其他方法。你可以使用array_map或array_filter,你也可以使用数学,如下面的
$numbers = array(2.453, 3.35, 2.53, 1.636);
$valid_numbers = array_filter($numbers, function($number) { return strlen($number) - strpos($number, '.');
答案 2 :(得分:1)
正则表达式可能是一种解决方案,因为您的数字似乎被声明为字符串。
代码:
<?php
$re = "/(\d\.\d{2})(?!\d)/";
$array_input = array('1.00', '1', '1.000');
foreach($array_input as $row)
{
if(preg_match($re, $row, $matches) == 0)
echo $row . " isn't a valid value with 2 decimals only. <br>";
else
echo $row . " is valid. <br>";
}
?>
输出
1.00 is valid.
1 isn't a valid value with 2 decimals only.
1.000 isn't a valid value with 2 decimals only.
答案 3 :(得分:1)
您可以这样做:
if(strlen(substr(strrchr($number, "."), 1)) == 2){
echo "valid";
}else{
echo "not valid";
}
答案 4 :(得分:1)
这可能是使用preg_match_all
$re = "/^\\d+(?:\\.\\d{2})?$/m";
$str = "1.00\n13333.55\n1.000";
preg_match_all($re, $str, $matches);
echo '<pre>';
print_r($matches);
echo '</pre>';
答案 5 :(得分:1)
function check_decimals($input, $number_of_decimals)
{
if(strlen(substr(strrchr((string)$input, "."), 1)) == $number_of_decimals)
{
return TRUE;
}
else {
return FALSE;
}
}
check_decimals("1.000", 2);