使用案例开关,我如何测试十进制值是否在一个范围内?
此代码似乎只检查整数。
这是我的代码,试图检查小数/分数。
$my_num = 0.38;
switch(true) {
case in_array($my_num, range(0, .20, 0.01)):
$my_num_result = "It looks like your number is between 0 - 0.20!";
break;
case in_array($my_num, range(.21, .40, 0.01)):
$my_num_result = "I am between .21 - 0.40!";
break;
}
//Result: I am between .21 - 0.40!
echo $my_num_result;
这个问题是this question and answer的延续,但没有解决小数问题。
答案 0 :(得分:0)
我建议你使用的另一种方法(如果你没有太多的间隔来测试),假设你需要知道哪个区间包含一个数字:
$intervals = [[0,.20],[.21,.40],[.41,.60]/*...*/];
$num = .32;
$message = 'I am between %s - %s!';
foreach ($intervals as $inter) {
if ( $inter[0] <= $num && $num <= $inter[1] ) {
vprintf($message, $inter);
break;
}
}