我有一个像这样的字符串值“ 0.00050722”,我想将其数据类型转换为double/float。
我一直在尝试floatval()和doubleval(),但它总是返回值为0。
我需要在float数据类型中获得0.00050722的确切数量。
您只需要(typecast)
为所需的类型
<?php
$string = "0.00050722";
$float = (float) $string;
$float2 = $string + 0.0; //this works as well.
$floatval = floatval($string);
$double = (double) $string;
// TEST
printf("string: %s - %d<br>", $string, is_float ($string));
printf("float : %g - %d<br>", $float, is_float ($float));
printf("float2: %g - %d<br>", $float2, is_float ($float2));
printf("floatval: %g - %d<br>", $floatval, is_float($floatval));
printf("double: %g - %d<br>", $string, is_double ($double));
?>
应导致:
string: 0.00050722 - 0
float : 0.00050722 - 1
float2: 0.00050722 - 1
floatval: 0.00050722 - 1
double: 0.00050722 - 1
注意,串联也可以。
这是我的工作试试这个
<?php
$string = "0.00050722";
$num = floatval($string);
echo $num; // output 0.00050722
?>
对于一个项目,我试图编写此函数以将.087 0.87 1.000,87之类的字符串转换为浮点数:
function convertistr2float($string_number){
if(is_string($string_number)){
$virgola = ',';
$punto = '.';
$trovavirgola = strpos($string_number, $virgola);
$trovapunto = strpos($string_number, $punto);
if(($trovavirgola!==false)and($trovapunto!==false)){
$number = floatval(str_replace(',', '.', str_replace('.', '', $string_number)));
} elseif(($trovavirgola!==false)and($trovapunto===false)){
$number = floatval(str_replace(',', '.', $string_number));
} elseif(($trovavirgola===false) and($trovapunto!==false)){
if((substr($string_number, 0, 1)=='0')or(substr($string_number, 0, 1)=='.')){
$number = floatval($string_number);
}else{
$number = floatval(str_replace('.', '', $string_number));
}
} else{
$number = floatval($string_number);
}
}else{
$number = $string_number;
}
return $number;
}//convertistr2float