• ベストアンサー

桁数指定と四捨五入

bgbgの回答

  • ベストアンサー
  • bgbg
  • ベストアンサー率53% (94/175)
回答No.4

1000倍して整数部分での切り捨てを行うのがわかりやすい実装では。 $value = "19.9996"; $value_int = int( $value * 1000 ); # 100倍して整数に。負の値を扱う時はint関数は不適当かもしれません。注意。 $output1 = substr( $value_int, 0, -3 ); # 整数部 $output2 = substr( $value_int, -3 ); # 小数部 print "$output1.$output2"; 厳密な精度を要求する丸め動作は Perl が使用するシステム丸めを信用せず、代わりに自分自身で丸め関数を実装するべきです、とマニュアルにも書かれています。

関連するQ&A

  • 四捨五入に関して

    すでに似たような四捨五入の質問&回答が載ってますが、 自分のパターンは上手くいきませんでした。 例えば、"17174.7655"という数字を"17180"みたいに1桁目まで四捨五入をしたい場合、どのように記述すれば良いのでしょうか? また、Format関数を使用するとどのような書き方になりますか?

  • アクセスで四捨五入

    アクセスでの四捨五入を教えてください。 千の値で丸めたいです・・・ <例> 2,499 ⇒ 2,000 1,800 ⇒ 2,000 2,500 ⇒ 3,000 百の位を見て、四捨五入し、千円単位で丸めたいです。 よろしくお願いします。

  • 四捨五入について教えてください

    四捨五入について教えてください。 一桁の数字の1から9は四捨五入するといくつになるのですか? また、0や10や20の数字は四捨五入するといくつになるのですか? 宜しくお願い致します。

  • 四捨五入について

    とあるテキストに、3.848を四捨五入して小数点第一位まで求めると、3.8になる、と書いてあります。しかし、3.848の小数点第三位の8を四捨五入すると、3.85になり、これを更に四捨五入すると、3.9になるように思うのですが、いかがでしょうか?

  • ROUND関数で、四捨五入ができない。

    ROUND関数で、四捨五入ができない。 カラムの値が'8.5'の場合'9'になるはずなのですが、'8'となってしまいます。 解決方法ありますでしょうか? '4.5''6.5'の場合でも、四捨五入ができないです。 SELECT カラムA,ROUND(カラムA) FROM テーブル ----------------------------------------  カラムA |  ROUND(カラムA) ----------------------------------------   5.5   |   6          ←四捨五入ができている ----------------------------------------   8.5   |   8          ←四捨五入ができない ----------------------------------------   4.5   |   4          ←四捨五入ができない ---------------------------------------- XAMPP 1.7.3の MySQL 5.1.41を使用しています。

    • ベストアンサー
    • MySQL
  • 有効数字(有効桁数)と四捨五入について・・・。

    自分は現在高校生です。物理化学数学でカテゴリ迷ったのですがこちらに。 四捨五入、有効数字に関する質問は過去にもあるのですが、何か腑に落ちないので質問させて貰います。 学校では、 http://www.fnorio.com/0034significant_figure1/significant_figure.htm にあるように、「有効数字+1桁までを計算して結果を出し、その結果を有効数字にまとめろ」と習います。 しかしこれをやってしまうと、以下有効数字による表記として、 ア・・・1.1+1.445=2.545→(有効数字2桁なので四捨五入)→2.5 イ・・・1.1+1.445→(まず有効数字を3桁にしてみる) →1.1+1.45=2.55→(有効数字2桁なので四捨五入)→2.6 となり答えが違ってきます。 じゃあ有効数字+2桁まで計算すればいいのかと思うと、 ウ・・・1.1+1.4495=2.5495→(有効数字2桁なので四捨五入)→2.5 エ・・・1.1+1.4495→(有効数字4桁にしてみる)→1.1+1.450=2.550→(有効数字2桁なので四捨五入)→2.6 となりやっぱり答えが変わるパターンがあります。 乗除については、 (四捨五入せずに)積を計算→結果を有効数字+1桁に変換→・・・ なんてことを繰り返していると+1桁程度では厳密に計算したものとかなり違ってくると思います。 実際、高校の物理や化学ではア~エは全部正解にしてくれると思うのですが(エはよく分かりませんが・・・)、数学的にはどうなのでしょうか。 また、誤差の大きくなってしまう乗除はどうすればいいのでしょうか。

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

    例えば、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を取得しようとすると構文エラーになります。 どうしたらいいのでしょうか? よろしくお願い致します。

  • 四捨五入、丸め・・・?

    たとえば、235.4を小数点第一位で「四捨五入」すると、236ですよね。 334を330に、336を340にするような場合は、なにか言い方がありますか? わかりにくくてすみません。

  • 四捨五入、簡単そうで、出来ません・・・

    お世話になります。 さて、 18643.52 この数字を、まず、小数点を四捨五入して 18644 とします。 次に、 18644の数字を、四捨五入して、 18640 としたいです。 一気に、18643.52 から 18640 とする方法は ありますか? 教えて下さい。