Php 查找小数范围内的所有数字
我编写了以下函数Php 查找小数范围内的所有数字,php,math,Php,Math,我编写了以下函数 function range_gen($num1,$num2){ $exp = explode('.',$num1); $accuracy = strlen($exp[1]); $dp = array( 0=>1, 1=>0.1, 2=>0.01, 3=>0.001, 4=>0.0001); foreach ($dp as $key=>$acc) {
function range_gen($num1,$num2){
$exp = explode('.',$num1);
$accuracy = strlen($exp[1]);
$dp = array(
0=>1,
1=>0.1,
2=>0.01,
3=>0.001,
4=>0.0001);
foreach ($dp as $key=>$acc)
{
if ($accuracy ==$key){
$step = $acc;
}
}
foreach (range($num1, $num2 ,$step) as $number) {
$ans.= "\"".$number."\",";
}
echo trim($ans,",");
}
如果我给它两个值,比如20.49和20.51,那么结果是20.49,20.5,20.51
我怎样才能把20.5变成20.50
谢谢
Rob您应该看看函数
echo number_format($number, 2);
示例:$formatted=sprintf('%.2f',2.5)代码>您应该查看函数
echo number_format($number, 2);
示例:
$formatted=sprintf('%.2f',2.5)代码>您无法“获取”20.5,因为php将自动截断尾随的十进制0。但是,当您使用echo
打印号码时,您可以将其格式化:
echo number_format($number, 2);
在您的循环中,可以这样做:
$x=20.5;
$str = sprintf("%.2f", $x);
var_dump($str);
你可以有这样的东西:
foreach (range($num1, $num2 ,$step) as $number) {
$ans.= "\"".number_format($number,2)."\",";
}
您不能“获取”20.5,因为php将自动截断尾随的十进制0。但是,当您使用echo
打印号码时,您可以将其格式化:
echo number_format($number, 2);
在您的循环中,可以这样做:
$x=20.5;
$str = sprintf("%.2f", $x);
var_dump($str);
你可以有这样的东西:
foreach (range($num1, $num2 ,$step) as $number) {
$ans.= "\"".number_format($number,2)."\",";
}
选择权
数字格式()
这是PHP函数的域
echo number_format($number, 2);
使用循环代码的示例:
foreach (range($num1, $num2 ,$step) as $number) {
$ans .= '"' . number_format($number,2) . '",';
}
foreach (range($num1, $num2 ,$step) as $number) {
$ans .= '"' . sprintf("%.2f", $number) . '",';
}
sprintf()
另一种选择是使用:
使用循环代码的示例:
foreach (range($num1, $num2 ,$step) as $number) {
$ans .= '"' . number_format($number,2) . '",';
}
foreach (range($num1, $num2 ,$step) as $number) {
$ans .= '"' . sprintf("%.2f", $number) . '",';
}
我会怎么做
选择权
数字格式()
这是PHP函数的域
echo number_format($number, 2);
使用循环代码的示例:
foreach (range($num1, $num2 ,$step) as $number) {
$ans .= '"' . number_format($number,2) . '",';
}
foreach (range($num1, $num2 ,$step) as $number) {
$ans .= '"' . sprintf("%.2f", $number) . '",';
}
sprintf()
另一种选择是使用:
使用循环代码的示例:
foreach (range($num1, $num2 ,$step) as $number) {
$ans .= '"' . number_format($number,2) . '",';
}
foreach (range($num1, $num2 ,$step) as $number) {
$ans .= '"' . sprintf("%.2f", $number) . '",';
}
我会怎么做
试试这个:
string number_format ( float $number , int $decimals = 0 )
试试这个:
string number_format ( float $number , int $decimals = 0 )
这样使用:
$x=20.5;
$str = sprintf("%.2f", $x);
var_dump($str);
输出:
字符串(5)“20.50”如下使用:
$x=20.5;
$str = sprintf("%.2f", $x);
var_dump($str);
输出:
字符串(5)“20.50”哦,天哪,我们需要一个参考问题。浮点数是不精确的,尤其是当您要表示的数字的分母不是2的幂时。但这并不是你最大的问题:这个函数的基本原理是有缺陷的。它应该为输入输出什么(0,0.23)
?什么是(0.000000001,0.00000000 4)
(它目前崩溃得很厉害),(-2e-18,-3e-18)
,或者(1/3,2/3)
?您将如何编写它?我知道这很粗糙,但就我的目的而言,这很有效。哦,天哪,我们需要一个参考问题。浮点数是不精确的,尤其是当您要表示的数字的分母不是2的幂时。但这并不是你最大的问题:这个函数的基本原理是有缺陷的。它应该为输入输出什么(0,0.23)
?什么是(0.000000001,0.00000000 4)
(它目前崩溃得很厉害),(-2e-18,-3e-18)
,或者(1/3,2/3)
?您将如何编写它?我知道它很粗糙,但对我来说,这很管用。