将字符串转换为在PHP中浮动

问题描述 投票:0回答:3

我有一个像这样的字符串值“ 0.00050722”,我想将其数据类型转换为double/float

我一直在尝试floatval()doubleval(),但它总是返回值为0。

我需要在float数据类型中获得0.00050722的确切数量。

php string double decimal
3个回答
5
投票

您只需要(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

注意,串联也可以。


1
投票

这是我的工作试试这个

<?php
    $string = "0.00050722";
    $num = floatval($string);
    echo $num;   // output 0.00050722
?>

0
投票

对于一个项目,我试图编写此函数以将.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
© www.soinside.com 2019 - 2024. All rights reserved.