• ベストアンサー

小数の四捨五入

お世話になります。 タイトルのとおりなのですが、ただ0.2332232…みたいな小数ではなく、 DBから取得した小数で、 2.46674e+007 のような感じで後ろに+~という文字がついてしまっている小数の四捨五入の仕方です。 これをroundで四捨五入すると、0になってしまいます。 // $float_numが2.46674e+007だとして // 小数第3位まで取得 $float_num = round($float_num,3); 出力結果:24667400 2.467という値を取得したいです。 どうかご教授いただけないでしょうか。

  • PHP
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • tecinfo
  • ベストアンサー率52% (32/61)
回答No.1

<?php $float = "2.46674e+007"; echo $float."<br>"; $float_num = round((float)$float,3); echo $float_num."<br>"; $float_num2 = split("e", $float); $float_num = round((float)$float_num2[0],3); echo $float_num; ?> 単純に(float)でキャストしただけでは、小数点が消えてしまうみたいなので、eの前だけ取り出して四捨五入してはどうでしょうか?

myaa_myu
質問者

お礼

ありがとうございます! あと、、、申し訳ありません、私の勘違いでした。 てっきりDBに格納された値は2.46674……と続く少数だと思っておりましたので、四捨五入の仕方を質問させていただいたのですが、丸め誤差(?)によるもので2.46674e+007という数字は少数ではなかったようです。。。 ですが、この方法は今後使えそうですね。是非活用させてください。 ありがとうございました!!

関連するQ&A

  • Access2000 小数第3位で四捨五入

    質問させていただきます。 Access2000で以下の計算式を作りました。 金額 = Round(重量 × 単価,2) これは「金額」を小数第3位で四捨五入します。 ところが以下の数値の場合、正しく計算してくれません。 764.00 = 0.479 × 1595 本当は 764.005 だから 小数第3位で四捨五入すると 764.01 になると思うのですが・・・。 ちなみに以下の値では・・・ 754.44 = 0.473 × 1595 (754.435だから小数第3位で正しく四捨五入されています)。 やり方が悪いのでしょうか?それとも他に正しく計算できる方法があるのでしょうか?

  • C++の四捨五入

    プログラミングで言う四捨五入とはいったいなんなのでしょうか? 丸めと四捨五入が混同していてよくわからなくなってます C++でこれは四捨五入ですか? cout << fixed << setprecision(1) << num/7.0 << endl; いままで、とはいっても初心者ですが四捨五入の時は以下のようにしていました。 cout << round((num/7.0)*10)/10 << endl; 小数点第2位を四捨五入しなさいと言われた時はどちらも同じですか?

  • 小数点の四捨五入で分からないことがあります

    例えば、0.230978という値を小数点第4位を四捨五入したら、答えは0.231ですか?それとも0.2310が答えですか? また、0.8という値を小数点第1位を四捨五入したら、答えは1.0ですか?それとも1ですか? よろしくお願いします。

  • 四捨五入について

    今、SELECT文で取得した値をround()を使って四捨五入したいのですが、構文エラーになります。 SELECT ROUND( SELECT 0.2*(SLECT number FROM sample WHERE id =1) ); ROUND()内のSELECT 0.2*(SLECT number FROM sample WHERE id =1) で、値が12,6のように返ってきます。 しかし、round()で四捨五入して13を取得しようとすると構文エラーになります。 どうしたらいいのでしょうか? よろしくお願い致します。

  • 四捨五入について

    "1.005"を小数点第三位で四捨五入して、"1.01"にしたいのですが、 "Math.round(1.005*100)/100"だと1.005*100が100.4999999999998になってしまい、結果的に"1.00"が返されてしまいます。何か良い解決方法はないでしょうか?

  • 算数の四捨五入が分かりません

    小学生レベルの四捨五入の問題なのですが、 (1) 0.75を小数第一位で四捨五入し、整数で表せ (2) 0.01を小数第二位で四捨五入し、小数第一で表せ (3) 4.2を小数第一位で四捨五入し、整数で表せ などという問題が、昔のことですっかり忘れてしまって分からない状態なんです。 ちなみに(1)の答えは『1』なんじゃないかな、と考えたりもしたのですが違うのでしょうか? このような四捨五入の仕方を教えていただけると助かります。 明日までにどうしても解かなければならないので、回答宜しくお願いします!

  • エクセルの数式:四捨五入

    エクセルの四捨五入の仕方を教えてください。 =ROUNDで (A1+A2)/(B1+B2)の割り算の値を ,0の桁 で四捨五入したいのですが、 ダイカッコとか使わないとダメなんですよね?? エラーになってしまうのは何故? HELP ME-----------!!

  • 小数点4桁での四捨五入がうまくいきません

    エクセルで次のような計算をさせます。 A2 に1.8、B2に0.075、C2に0.075、 D2に= A2*B2*C2 、E2に=roundup(D2,4) D2の計算結果は 0.010125 です。小数点第5桁目の値を参照して第4桁目で四捨五入したいのですが、roundupでは0.0102、rounddownでは0.0101です。 表示させたいのは0.0101です。この場合、rounddownを使えば問題ないのですが、逆にrounddownだと小数点以下4桁目の四捨五入がうまくいかない場合もあります。 例えば A3に2.7 B3に0.08、C3に0.08 があり、E3にすべての値を掛けた結果を表示させると0.01728となります。 =roundup(E3,4)では0.0173となり、rounddownでは0.0172となります。この場合はroundup関数の結果である0.0173が求める数値です。 A列、B列,C列に任意の数字が入り、E列に4桁目で四捨五入した正確な値を求めたいのですが、なにか良い方法はないでしょうか。 VBAを使っても構いません。ちなみにこれは木材の材積計算に使用する目的です。 よろしくお願いします。

  • PHP5における四捨五入について

    PHP5でラウンド関数を使用しても境界値の5の値を切り捨ててしまい,四捨五入が上手くできません。 具体的には,以下の感じです。 $C = ROUND($B / $A,2) "C=282.25" $D = ROUND($C,1) "D=282.2" ※データ型は特に定義していません。 どのようにしたら四捨五入が上手くできるか教えて頂けないでしょうか。よろしくお願いします。

  • Excel2000で変則的な四捨五入の関数を教えて下さい。

    関数式を教えて下さい。 小数点以下を四捨五入した結果を整数で出したいです。 但し、普通のROUND関数で出た答えを尚も、下一桁が5づつ飛ぶように.. たとえば、 100.5--101--100(求めたい値) 101.7--102--100(求めたい値) 102.5--103--105(求めたい値) 105.8--106--110(求めたい値) 112.4--112--110(求めたい値) 113.5--114--115(求めたい値) 118.5--119--120(求めたい値) こんな感じです。(中央の値は特に必要ではありません) 四捨五入し、且つ5の倍数の整数での値が欲しいです。 よろしくお願いします。

専門家に質問してみよう