1

number に2345.567のような文字列値を取得しました。小数点以下 1 文字だけを保持したいです。Number 関数を使用したくありません。ピリオド (ドット) の後の任意の数の文字を削除したいだけですか?

4

6 に答える 6

4

入力が数値ではないことが心配な場合は、最初に検証する必要があります。

function round_number($number, $precision = 1) {
    if(!is_numeric($number)) {
        throw new InvalidArgumentException("round_number() expects a numeric type, instead received '".gettype($number)."'");
    }

    return round($number, $precision);
}

参照:

于 2012-07-28T07:40:10.147 に答える
3
$number =  2345.567; 

$new_numb = number_format($number,1);

$new_numb は文字列として扱われます

于 2012-07-28T07:25:50.877 に答える
2
<?php
$str =  "2345.567";
$ip = explode('.',$str);
echo $ip[0].".".substr($ip[1],0,1)
?>

編集後:

<?php
// case:  if there is no decimal place
echo $ip[0]."".($ip[1]?".".substr($ip[1],0,1):'');
?>
于 2012-07-28T07:34:31.653 に答える
1

フォーマットされた文字列出力は、number_formatまたはprintfファミリーの関数を使用して実行できます。

print number_format((float)$string, 1);
printf("%.1f", $string);
于 2012-07-28T07:27:16.860 に答える
0

入力が整形式であることが保証されていると仮定します...

substr($numberString, 0, strpos(".", $numberString) + 2);

于 2012-07-28T07:29:34.543 に答える
0

次のように行うことができます

$string = "234567.2345";
if(!is_numeric($string)) {
   $output = $string;
}
else{
   $output = round($string,1);
}

出力は

234567.2

文字列が 234 として指定されている場合

output will be 234.o

数値「asdf」以外の文字列を指定した場合

output will be asdf
于 2012-07-28T07:45:18.787 に答える