1

製品の価格を表示しようとしていますが、価格が整数値の場合は小数点以下「.00」を表示しません。しかし、現在の結果は常に 10 進数の値を示しています。現在のロジックを以下に示します。

$price_value = "20.00"; //coming from DB as string


if (is_int($price_value)) {

   //Display whole number without decimal
   $to_print = number_format($price_value,0);

else {
  //Show the decimal value
  $to_print = number_format($price_value,2);

}

//When I print this value I always get "`20.00`" not "`20`"
4

5 に答える 5

3

文字列を変換したため、変数は整数とは見なされません。

例を参照してください。

php > var_dump(is_int("23.0"));
bool(false)
php > var_dump(is_int("23"));
bool(false)
php > var_dump(is_int(23));
bool(true)

代わりに、次の操作を実行できます。

if( abs($price_value - floor($price_value)) < 0.001 )
  //Display whole number without decimal
  $to_print = number_format($price_value,0);
else {
  //Show the decimal value
  $to_print = number_format($price_value,2);
}

0.001 は、文字列を小数に変換する際の丸め誤差を考慮します。

于 2013-01-26T05:44:19.900 に答える
0

「0」パラメータを削除してみてください。とにかくデフォルトです。

それが機能せず、それを行うことを主張する場合は、すべての引数を追加できます。

string number_format ( float $number , int $decimals = 0 , string $dec_point = '.' , string $thousands_sep = ',' ) 

そして、dec_point を分割に使用できる文字値に設定し、その時点までの文字列を返します。ただし、最初のアイデアが機能するかどうかを最初に確認してください。

于 2013-01-26T05:44:43.973 に答える
0

小数点なしで値を印刷するために使用できます

$to_print = (int) $price_value;
于 2013-01-26T05:45:54.320 に答える