Проблема с setBigDecimal подготовленным оператором? - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть готовое заявление.Я звоню

stmt.setBigDecimal(BigDecimal.valueOf("0.9"))

проблема в том, что в базе данных 0,90000000000000000000 сохраняется вместо 0,9.

Я использую Microsoft SQL Server JDBC Driver 3.0.

BigDecimal не понятводителем или заставить водителя что-то делать не так?

Ответы [ 2 ]

2 голосов
/ 08 ноября 2011

Поскольку вы указываете, что тип данных является ДЕСЯТИЧНЫМ (36,20), это вполне логично: 36,20 означает: точность 36 чисел, из которых после десятичного разделителя есть 20.

Если вы сохраните 0,9 в DECIMAL (36,20), это будет 0,90000000000000000000 (который имеет 20 позиций после десятичного разделителя), так как это указанная точность для поля.

1 голос
/ 08 ноября 2011

Точность столбца, вероятно, является причиной этого. Вероятно, он был объявлен как числовой без какой-либо конкретной точности или масштаба.

...