- ベストアンサー
小数点以下の表示が正しく表示されなくて困ってます
public class test{ public static void main(String args[]){ double a = .05; System.out.println(a*3.0); } } というプログラムなんですけども。 アウトプットを表示すると >java test 0.15000000000000002 っというふうに表示されてしまいます。 プログラム自体を変えずに、0.15という表示を出したいのですが、どうしてもでません。誰か、教えていただければありがたいと思っています。よろしくお願いします。
- syonen
- お礼率30% (3/10)
- Java
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
まず、doubleでは「0.05 * 3.0」の結果は0.15にはならない、ということは理解できていますか? それを踏まえた上で、一般的な考え方として・・。 決まったフォーマットの形で数値を出力したい場合は、java.textのフォーマット関連のクラスを利用するのが一般的です。実数であればDecimalFormatを使うのが良いでしょう。 import java.text.*; public class Sample { public static void main(String[] args){ // "#,##0.00"というフォーマットでDecimalFormatを作成 DecimalFormat df = new DecimalFormat("#,##0.00"); double a = .05; // DecimalFormatのformatでフォーマット済みテキストを得る System.out.println(df.format(a*3.0)); } } こんな感じです。 java.text.DecimalFormatを調べてみるとよいでしょう。
その他の回答 (1)
- pcbeginner
- ベストアンサー率46% (261/560)
最近あった似たような質問。
関連するQ&A
- コマンドライン引数の*(アフタリスク)の表示について教えて下さい
皆様どうぞよろしくお願い申し上げます。アドバイス下さい。 java言語で質問です。調べたかぎりわからないことが起こりました。次のものです。コマンドライン引数で引数1は数字、引数2は数字、引数3は* で表示させるプログラムを作りました。引数3番目の演算子*(アフタリスク)を表示する場合にうまく表示できません。 C:\java>java test 2.0 15.0 * 2.0 15.0 Calculation.class ←表示されません。 プログラムは以下のものを作りました。見てください。 /** * 実行クラス:引数テストクラス */ class test{ public static void main(String args[]) { //引数を取得 double num1 = Double.parseDouble(args[0]); //引数1(数値) double num2 = Double.parseDouble(args[1]); //引数2(数値) String kigou = args[2]; //引数3(計算記号) //画面に出しています。 System.out.println(num1); System.out.println(num2); System.out.println(kigou); } }
- 締切済み
- Java
- 今日からjavaの勉強をはじめたものです
以下のプログラムを作成したところ、コンパイルは通るのですが、実行すると、Exception in thread "main" java.lang.NoClassDefFoundError: testとでます。こんな簡単なプログラムも実行できないなんて。。だれかわかる人いませんか? class HelloJava { public static void main(String[] args) { System.out.println("Javadasu"); } }
- ベストアンサー
- Java
- Javaについて教えてください!
sampleパッケージに属するMain.javaとSub.javaがあり、Main.javaのmainはSub.javaのsubメソッドを呼び出して「OK」と表示させるプログラムを教えてください! //Main.java package sample; public class Main{ public static void main(String[] args){ Sub.sub(); }} //Sub.java package sample; public class Sub{ static String str = "OK"; public static void sub(){ System.out.println(str); }} String型の変数strはクラス変数で行いたいのですが、どこを改善すれば良いでしょうか?
- ベストアンサー
- Java
- インスタンスの情報表示について
Java初心者です。 例えば次のようなソースがあって、double型の変数numの情報を表示するためにtoStringをオーバーライドするとすると、どのようにすればStringを返せるのでしょうか。 public class Test { private double[] num; public Test(double a, double b, double c) { num = new double[3]; this.num[0]=a; this.num[1]=b; this.num[2]=c; } public toString() { // return "インスタンスは: "+ } public static void main(String args[]) { Test a = new Test(4.3, 5.6, 12.7); System.out.println(a.toString()); } }
- 締切済み
- Java
- プログラムの合体。
jump7799_4836さん 2018/7/2103:34:44 public class Test2 { public static int メソッド () { System.out.println("メソッド()が呼ばれました"); return 0; } public static int メソッド (int i) { System.out.println("メソッド(int i)が呼ばれました"); return i; } public static int メソッド (int i, int j) { System.out.println("メソッド(int i, int j)が呼ばれました"); return i; } public static int メソッド (short s) { System.out.println("メソッド(short s)が呼ばれました"); return s; } public static int メソッド (double d) { System.out.println("メソッド(double d)が呼ばれました"); return (int) d; } } public メソッド class Test2 { public メソッド static void main(String[] args) { Test2.メソッド (); Test2.メソッド (1); Test2.メソッド (1,2); Test2.メソッド (1.1); Test2.メソッド ((short) 1); Test2.メソッド ((double)1); } } kouzou@GD348ZZD9:/WORK$ javac Test2.java Test2.java:29: エラー: class、interfaceまたはenumがありません public メソッド class Test2 { ^ Test2.java:30: エラー: <identifier>がありません public メソッド static void main(String[] args) { ^ エラー2個 2つのプログラムが合体することってあるのですか? いつもすみません。 解説のほど、宜しくお願い申し上げます。
- ベストアンサー
- Java
- 下記のようなjavaのプログラムで、* や / を入力しても,
下記のようなjavaのプログラムで、* や / を入力しても, 必ず判定がfalseのほうになるんですけど、どうすれば良いですか? あまりjavaには詳しくないので、分かりやすく教えていただければ幸いです。お願いします。 import java.io.*; public class test{ public static void main(String[] args) throws IOException{ BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); String a; a = input.readLine(); if((a == "*") ^ (a == "/")){ System.out.println("OK"); }else{ System.out.println("エラー"); } } }
- ベストアンサー
- Java
- 起動引数の表示
Java勉強中の初心者です。 起動引数の表示について お尋ねしたいことがあります。 起動引数が入力された場合には そのまま表示、無い場合は ”起動引数無し” と表示させたいのですが 下記のソースだと java.lang.ArrayIndexOutOfBoundsException のエラーが発生してしまいます。 このような場合はどのようにしたら よいのですか? よろしくお願いします。 ---------------------------------------------- public class Ren1 { public static void main(String args[]) { if(args[0].equals(null)){ System.out.println("起動引数無し"); } String s = args[0]; System.out.println(s); } }
- ベストアンサー
- Java
- javaでメインクラスが見つからないエラーが出てしまいます。
javaでメインクラスが見つからないエラーが出てしまいます。 やさしい簡単なプログラム class test { public static void main(String[] args) { System.out.println("Viva!"); } } をjavacでクラスファイルを作った後に(ここまではできます)java test.class を行うと could not find the main class というエラーが出てしまいます。 教科書の通りにjdkをインストールして、パスを環境変数に通して、コマンドプロンプトでコンパイルしかしていません。 なにが悪いんでしょうか?
- ベストアンサー
- Java