是否有类似于 (int) 的 PHP 函数允许我调用有理数?

Is there a PHP function similar to (int) that will allow me to call rational numbers?

我一直在阅读一些书,作为 PHP 的新手,我似乎无法理解如何在 PHP(特别是 wordpress functions.php 文件)中正确使用有理数。

在我创建的网站上,用户输入测试分数 $straight_acceleration - 通常由有理数组成,而不是整数(例如 1.27 秒) - 我将其捕获为 ACF 值数据库。

然后我 运行 根据我 child 主题的 funtions.php 文件中的这个测试分数进行计算,给他们一个 100 分的评分。

在下面的代码中,我使用了 (int) 函数来调用值,但这显然不起作用,因为它将值转换为整数,输出了错误的评分。如果我删除 (int) 函数,它会抛出一个致命错误。

是否有我需要使用的函数(类似于 (int) 函数)允许我调用有理数?还是我的代码有其他问题不允许我删除 (int) 函数?

如有任何帮助,我们将不胜感激。

 $current_user = wp_get_current_user();
    
    $straight_acceleration = get_user_meta($current_user->ID, 'straight_acceleration', true);
    
        if ((int)$straight_acceleration >= 1.14) {
    
        $straight_acceleration_percent_value = (100*((0.2) + ((((int)$straight_acceleration - 1.27)*(0.6-0.2))/(1.14 - 1.27))));
    
        $min = 0;
        $max = 100;
        $current = $straight_acceleration_percent_value;
        $clamped_straight_acceleration_percent_value = max($min, min($max, $current));
        
        $clamped_straight_acceleration_percent_value = round($clamped_straight_acceleration_percent_value, 2);
            
        update_user_meta($current_user->ID, 'straight_acceleration_percent', $clamped_straight_acceleration_percent_value);

    }

也许您正在寻找 floatval? 它应该做你需要的,它将像“10.2”这样的字符串转换为像 10.2

这样的纯浮点数

您唯一需要注意的是浮点数是 locale-dependant。这意味着如果您的语言环境是美国,那么您将点作为小数点分隔符,如果您使用类似 IT 的东西,那么您可能将逗号作为小数点分隔符

如果您在计算中遇到致命问题,可能是因为您试图在字符串和纯数字(可以是浮点数或您称之为有理数)之间进行数学运算

在php中你也可以直接比较字符串数字(int, float, double)

$string_val = "1.156";
$float_val = 1.156;

echo '<br>';
echo ($string_val > 1)?"bigger":"smaller"; // bigger 
echo '<br>';
echo ($string_val > 1.5)?"bigger":"smaller"; // smaller
echo '<br>';
echo ($string_val > "1")?"bigger":"smaller";// bigger 
echo '<br>';
echo ($string_val > '1.5')?"bigger":"smaller";// smaller
echo '<br>';
echo ($float_val > 1)?"bigger":"smaller";// bigger 
echo '<br>';
echo ($float_val > 1.5)?"bigger":"smaller";// smaller
echo '<br>';
echo ($float_val > "1")?"bigger":"smaller";// bigger 
echo '<br>';
echo ($float_val > '1.5')?"bigger":"smaller";// smaller
echo '<br>';