![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
実数 2.0 に対して int(2.0) ==2 だが、
int(1.9), int (1.99), int(1.999), int(1.9999) , ・・・・
は 何ケタまで続けば 整数 2 になるか?
というプログラミングの問題なのですが、答えは16桁であってますか?
また、やり方が違っていればご指摘願います。
double d = 1.9999999999999999;
String s = "";
if(2==d){
s = ": if(2==d)";
}else{
s = ": if(2!=d)";
}
System.out.println(d+s);
No.1ベストアンサー
- 回答日時:
INT変換は基本的に切り捨てです。
基本ルールとしては何桁続いても1.9999...は1です。
ただ、a=1/3;b=a*3;とした時にbを扱わなければならない為、有効桁の最後まで9が続く様な数字の場合切り上げるという処理が働きます。
この仮数部の有効桁数は52bitで10進数では15桁~17桁です。ですから指数部が指し示す少数域を9で埋めてあげれば切り上げ処理が働くことになります。
仮数部の有効桁数が15~17桁ですので数百万と言った大きな数字を入れると小数点以下の桁数は減ってゆきます。一方0.000009999...の様な小さな値を入れれば小数点以下の桁数は増えてゆきます。
ですから答えは「不定」です。
そもそも、doubleがどの値に近いかを判定するための仕様ではありません。
仕様の目的外使用をせずにご自分で何をもって切り捨て切り上げとするか(例えば四捨五入とか)を決定し、それに基づいた実装にすべきです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# プログラムの時、フローチャートはどうなりますか?図でお願いします。 int main(void) { 1 2022/10/01 22:45
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0dの意味を教えてください
-
モンテカルロ法を用いた球の体...
-
Javaで何パーセント%かを表示...
-
実数からの小数部の取得
-
べき乗
-
最大値と最小値の求め方
-
double型変数値の整数部分のみ...
-
java プログラム 範囲を指定し...
-
Javaプログラムのフローチャー...
-
osamuyさん、では「今まで入力...
-
小数点以下の切捨てにつきまして
-
double型の足し算について
-
javaの課題。。
-
javaでC++のdefine文に相当する...
-
矩形法プログラムの計算値と計...
-
JSPやサーブレットでSystem.out...
-
System.err. printlnとSystem.o...
-
ページング
-
ダブルクォーテーションのrepla...
-
C言語のポインターに関する警告
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
べき乗
-
実数からの小数部の取得
-
Javaで何パーセント%かを表示...
-
0dの意味を教えてください
-
最大値と最小値の求め方
-
double型変数値の整数部分のみ...
-
Javaによる利率計算の実装方法
-
doubleで入力するには?
-
doubleとintの違い
-
JAVAのプログラムで、2乗計算...
-
double型の足し算について
-
掛け算演算を使わない掛け算
-
実数 2.0 に対して int(2.0) ==...
-
Javaコンパイルエラー
-
java のfor文について質問です。
-
C# ToStringでの数字桁揃えの仕方
-
java プログラム 範囲を指定し...
-
Javaのeval関数処理
-
printfでのエラーがわからない...
-
数値積分について
おすすめ情報