나는 성명서를 준비했다. 전화 :준비된 문으로 setBigDecimal에 문제가 있습니까?
stmt.setBigDecimal(BigDecimal.valueOf("0.9"))
문제는 0.90000000000000000000이 0.9 대신 저장된다는 것입니다.
Microsoft SQL Server JDBC 드라이버 3.0을 사용합니다.
BigDecimal은 드라이버가 이해하지 못하거나 드라이버를 잘못 만들었습니까?
나는 성명서를 준비했다. 전화 :준비된 문으로 setBigDecimal에 문제가 있습니까?
stmt.setBigDecimal(BigDecimal.valueOf("0.9"))
문제는 0.90000000000000000000이 0.9 대신 저장된다는 것입니다.
Microsoft SQL Server JDBC 드라이버 3.0을 사용합니다.
BigDecimal은 드라이버가 이해하지 못하거나 드라이버를 잘못 만들었습니까?
데이터 유형이 DECIMAL (36,20)임을 나타내므로 전적으로 논리적입니다. 36,20은 36 자리의 정밀도이며 소수점 이하 20자를 나타냅니다.
DECIMAL (36,20)에 0.9를 저장하면 필드의 지정된 정밀도이므로 0.90000000000000000000 (소수점 이하 20 자리 뒤에 있음)이됩니다.
thx 예, 논리적으로 맞습니다. 하지만 나는 그렇게 똑똑하지 않다는 것을 안다. 나는 데이터베이스에서 값을 읽는 것보다 소수점 이하 20 자리를 사용하여 모든 계산이 이루어진다는 것을 의미한다 ... – Zardo
그것이 원하는 것이 아니라면, 데이터베이스의 DECIMAL 데이터 유형을 선택하거나 선택한 필드를 더 작은 소수의 DECIMAL 유형으로 변환하십시오. –
해당 열의 전체 정의는 무엇입니까? –
십진수 (36, 20) – Zardo