是否有类似于 (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>';
我一直在阅读一些书,作为 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>';