• 締切済み

float型の精度(有効桁と実数)について

float型を使った演算の結果で0.0024568という8桁の結果でてきました。 IEEE754の規格により、float型は6~7桁とあるのにナゼ8桁が出てきたのか解りません。 ここで言ってる7桁とは、小数点以下7桁の実数が有効桁と言っているのでしょうか? お詳しい人、無知な自分に教えてください。

みんなの回答

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

0.0024568 × 10の0乗 0.24568 × 10の-2乗 ですから,この数値の10進数での有効桁長(精度)は5桁です。 0.000024568 0.00024568 0.0024568 0.024568 0.24568 2.4568 24.568 245.68 2456.8 24568 上記はすべて10進数での有効数字は5桁です。

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「有効数字」について調べてみるといいかも. ああ, あなたの使った処理系で, float が binary32 になってるかどうかは知らないよ.

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • -5.75をIEEE754単精度実数表現

    -5.75(10進数)をIEEE754単精度実数表現する問題なんですが、 ・負だから符号ビット(1)…(1) ・5.75=(101.11000…)→1.0111000…×2^2 ・2=b-127 , b=129=(10000001)…(2) ・5.75を2bitで表したやつの小数点以下(0111000…)…(3) (1)(2)(3)を順に並べて『1 10000001 0111000…』 で合っていますか?よろしくお願いします。

  • 最大50桁の実数の和・差・積を求めたい

    C++で、2つの最大50桁の実数を入力して、その和・差・積を求めるプログラムを作りたいのです。 実数をchar型に入力させて、それを1桁ずつint型に変換したいのですが、どのようにやればよいのでしょうか? また、その際、符号や小数点はどうすればよいのでしょうか? 計算の流れとしては、 ○足し算 小数点を合わせる ⇒下位の桁から1桁ずつ足し算していく ⇒結果が10以上の場合、10を引き、左隣の桁の数字に1を加える ○引き算 小数点を合わせる ⇒下位の桁から1桁ずつ引き算していく ⇒引かれる数字のほうが引く数字より小さい場合、引かれる数字に10を足し、左隣の桁の引かれる数字から1を引く というような感じで考えているのですが、小数点の合わせ方がわかりません。 また、掛け算に関しては、筆算の要領でやろうと思うのですが、どのようにやればよいのでしょうか? 私はC++の勉強歴が短いので、できれば初心者向けのわかりやすい説明でお願いします。

  • 実数をIEEE規格に基づく浮動小数点の表現法

    実数をIEEE規格に基づく浮動小数点の表現法で プログラミング表現したいのですがわけがわかりません。 単精度32bitで表現します。 助けてください。お願いします。 (例:実数0.5、IEEE:00111111100000000000000000000) のような形になるようです。

  • float型の桁調整について

    float型の1.2345という数値を小数第2位まで表示したい場合、 System.out.printf("%1.2f\n", 1.2345); とでもやってやれば、 1.23 と表示されます。 では、これは表示ではなく、float型の変数に格納したい場合どのようにやってやればいいでしょうか? 例:1.2345→1.23にしてfloat型の変数に格納 また、同じくfloat型で、指定した桁数以降を0に置き換えるというのはどのようにしてやればいいでしょうか? 例:4桁目以降を0にする    123456→123000 よろしくお願いします。

    • ベストアンサー
    • Java
  • 大きな数、大きな演算精度の実数をあつかえるクラス

    1000桁くらいの大きな整数とか、有効数字1000桁くらいの実数の演算が可能なクラスを探しています。十進BASICならできると聞いたので、ダウンロードして試してみてできることは確認しましたが、BASICは20数年ぶりなので、ほとんど忘れています。CかC++で同じような精度の演算ができるライブラリはないでしょうか?

  • わり算の結果が整数でも小数点以下4桁まで表示されてしまう!

    わり算の結果が整数でも小数点以下4桁まで表示されてしまう! 同じような質問で恐縮なのですが、 例えば、100、101というデータをMySQLの算術演算子/を使って2で割ると、 50.0000、50.5000のように、整数だろうが小数だろうが、小数点以下4桁まで出てしまいます。 これを、いろんな関数を駆使して50、50.5にすることはできますか。 50、51または50.0、50.5のように小数点の位置を同じずつ動かすことはできるのですが、これでは嫌だなぁと思った次第です

    • ベストアンサー
    • MySQL
  • 新しい実数の構成:自然数→正の実数→実数

    次のような実数の構成はあるのでしょうか? まず、10進法の表記により自然数を構成します。 0を含めます。 0,1,2,3,4,5,6,7,8,9,10, 11、12、・・・ といった数を考えます。 ケタ数は有限です。 順序関係は、まず、ケタの大小を比べ、ケタが同じであれば、最大ケタの数字を比べます。 0~9までの加法と乗法を九九として決め、一般の自然数の加法と乗法は筆算により定めます。 つぎに、小数点以下を考えます。 まず、小数点以下のケタ数が有限なる数を考えても、順序関係と加法・乗法はいままでと同様です。 そして、小数点以下のケタ数が無限なる数を考えます。 順序関係はいままでに追加して、 1=1.000・・・=0.999・・・ といったことなどを考えます。 加法と乗法の筆算も、「左から計算」していけばいいと思います。 このとき、新しく除法も考えられます。 これで、正の実数が構成できたと思いますが、 最後に、小数点以上のケタ数が無限なる数を考えます。 たとえば、 ・・・1212.12  とか ・・・333.333・・・ 順序関係はうまくいきませんが、 ・・・999+1=・・・000=0 と考えると、 ・・・999=-1 といった意味になり、 3をかけることで、 ・・・997=-3 といった意味になったり、 3でわることで、 ・・・333=-1/3 といった意味になったりします。 また、加法と乗法の筆算は、「小数点を中心に左右へ計算」していけば整合性が得られると思われます。 そして、減法・除法も考えられると思います。 つまり、負の実数が構成されたと思います。 結局、左右に無限に続く10進法表記で、実数とその加減乗除が構成されたと思います。 このような、実数の構成はあるのでしょうか? また、不備がありましたら指摘ください。

  • 1000個の実数が実数型配列float X[999

    1000個の実数が実数型配列float X[999]に格納されているとする。これらの総和を求めたい float sum; sum =0.0; for(i=0,i<1000,i++) sum=sum+X[i]; この部分プログラムの問題点を指摘してどのように改良すればよいか文章で簡潔にこたえよ という問題を教えてください

  • float double の範囲

    javaのサイト見てます データ型にfloat doubleというのがあるのですが、 範囲が float 3.40282347E+38 double 1.79769313486231570E+388 と記載されているのですが これはどうゆう意味でしょうか? 小数点38桁388桁までという意味でしょうか?

  • エクセルで小数点以下3桁を四捨五入して、小数点以下1桁を表示する方法

    エクセル2003を使用しています。 計算式から出た結果に対して、小数点以下3桁を四捨五入して、小数点以下2桁ではなく、1桁を表示したいです。 例えば、計算式の結果、 1.145 の場合、普通に四捨五入すると 小数点以下1桁なら、1.1 小数点以下2桁なら、1.15 となってしまいます。 これを小数点以下3桁を四捨五入して、小数点以下1桁表示の1.2と表示させたいのですが、可能でしょうか?