おつりの時刻
3093 ワード
質問:
2ドルで1.10ドルのものを買いましたが、おつりはいくらですか.
出力は何ですか?
答え:0.89999999999999999
どうして0.90じゃないの?1.10はメモリに正確に格納できないため、最も近い数が格納されます.
出力:0.90
予想されていましたが、メモリに格納されている問題は明らかに解決されていません.出力面で問題を解決しただけです.
まずBigDecimalについてご紹介します
正確な計算精度を必要としない数字についてはfloatまたはdoubleを直接使用できますが、正確な計算結果が必要な場合はBigDecimalクラスを使用する必要があり、BigDecimalクラスを使用しても大きな数の操作が可能です.
シーケンス番号
ほうほう
を選択します.
描写する
1
public BigDecimal(double val)
こうぞう
double表現をBigDecimalに変換
2
public BigDecimal(int val)
こうぞう
int表現をBigDecimalに変換
3
public BigDecimal(String val)
こうぞう
文字列表現をBigDecimalに変換
4
public BigDecimal add(BigDecimal augend)
通常
加算
5
public BigDecimal subtract(BigDecimal subtrahend)
通常
減算
6
public BigDecimal multiply(BigDecimal multiplicand)
通常
乗算#ジョウサン#
7
public BigDecimal divide(BigDecimal divisor)
通常
除算
BigDecimalを文字列で構築する必要があることを説明します.そうしないと、出力は依然としてエラーです.
2ドルで1.10ドルのものを買いましたが、おつりはいくらですか.
import java.util.*;
public class Second{
public static void main(String[] args){
System.out.println(2.00-1.10);
}
}
出力は何ですか?
答え:0.89999999999999999
どうして0.90じゃないの?1.10はメモリに正確に格納できないため、最も近い数が格納されます.
import java.util.*;
public class Second{
public static void main(String[] args){
System.out.printf("%.2f
",2.00-1.10);
}
}
出力:0.90
予想されていましたが、メモリに格納されている問題は明らかに解決されていません.出力面で問題を解決しただけです.
まずBigDecimalについてご紹介します
正確な計算精度を必要としない数字についてはfloatまたはdoubleを直接使用できますが、正確な計算結果が必要な場合はBigDecimalクラスを使用する必要があり、BigDecimalクラスを使用しても大きな数の操作が可能です.
シーケンス番号
ほうほう
を選択します.
描写する
1
public BigDecimal(double val)
こうぞう
double表現をBigDecimalに変換
2
public BigDecimal(int val)
こうぞう
int表現をBigDecimalに変換
3
public BigDecimal(String val)
こうぞう
文字列表現をBigDecimalに変換
4
public BigDecimal add(BigDecimal augend)
通常
加算
5
public BigDecimal subtract(BigDecimal subtrahend)
通常
減算
6
public BigDecimal multiply(BigDecimal multiplicand)
通常
乗算#ジョウサン#
7
public BigDecimal divide(BigDecimal divisor)
通常
除算
import java.util.*;
import java.math.*;
public class Second{
public static void main(String[] args){
//System.out.println(2.00-1.10);
//System.out.printf("%.2f
",2.00-1.10);
System.out.println(new BigDecimal("2.00").subtract(new BigDecimal("1.10")));
}
}
BigDecimalを文字列で構築する必要があることを説明します.そうしないと、出力は依然としてエラーです.