1.为什么不是1.51?输出的是1.50
2.decimalformat括号里的字符串代表了什么意思?有模板吗?如果是别的格式应该怎么写
3.为什么要用#号而不是0.00?如果是#好的话,当a是0.505的时候有bug
double a =1.505; BigDecimal bd = new BigDecimal(a); System.out.println(new DecimalFormat("#.00").format(bd));
ringa_lee
먼저 문제를 지적하세요. BigDecimal을 구성할 때 부동 소수점 숫자(double, float)를 사용하지 마세요. 부동 소수점 숫자 저장에 정밀도가 부족하기 때문입니다. 컴퓨터. 예를 들어, 귀하가 작성한 코드는 다음과 같습니다.
BigDecimal
double
float
실행 결과:
보시다시피 부동소수점수 1.505는 컴퓨터에 저장이 되지 않습니다. 구체적인 이유를 모르시면 직접 검색해보시기 바랍니다. "부동소수점수 정밀도 누락 문제"
둘째, "반올림"이라고도 하는 1.51을 출력해야 하는 경우 DecimalFormat의 반올림 모드를 지정해야 합니다.
DecimalFormat
RoundingMode의 사용법이 이해가 안 되시면 "RoundingMode의 사용법"
RoundingMode
셋째, 괄호 안의 문자열 의미 DecimalFormat는 "DecimalFormat 사용"
으아아아
먼저 문제를 지적하세요.
으아악BigDecimal
을 구성할 때 부동 소수점 숫자(double
,float
)를 사용하지 마세요. 부동 소수점 숫자 저장에 정밀도가 부족하기 때문입니다. 컴퓨터. 예를 들어, 귀하가 작성한 코드는 다음과 같습니다.실행 결과:
보시다시피 부동소수점수 1.505는 컴퓨터에 저장이 되지 않습니다. 구체적인 이유를 모르시면 직접 검색해보시기 바랍니다. "부동소수점수 정밀도 누락 문제"
둘째, "반올림"이라고도 하는 1.51을 출력해야 하는 경우
으아악DecimalFormat
의 반올림 모드를 지정해야 합니다.실행 결과:
을 검색해주세요.RoundingMode
의 사용법이 이해가 안 되시면 "RoundingMode의 사용법"셋째, 괄호 안의 문자열 의미
을 검색해 보세요.DecimalFormat
는 "DecimalFormat 사용"으아아아