2017-02-10 7 views
1

В базе данных оракула у меня есть поле типа NUMBER (6,4). По умолчанию в базе данных это значение установлено как 0 (или должно быть 0,0000?).Java: проверьте, является ли значение поля oracle типа NUMBER (6,4) равно 0

В классе java мне нужно проверить, равно ли это значение 0 или нет. В настоящее время у меня есть это:

double feePercent = clientCardMemberGroup.getFeePerc(); 
if (feePercent != 0) { 
... 
} 

Это не правильный способ сделать. Я хотел бы знать, как я могу использовать BigDecimal, чтобы проверить, является ли значение из базы данных либо 0 (или 0.0, либо 0.00 или 0.000, либо 0.0000). Благодаря!

ответ

1

Если вам нужно использовать BigDecimal использовать ResultSet.getBigDecimal для извлечения данных из БД. И для сравнения значений вам нужно использовать метод BigDecimal.compareTo(). public int compareTo(BigDecimal val) возвращает -1, если BigDecimal меньше val, 1, если BigDecimal больше val и 0, если BigDecimal равен val. Чтобы скомпоновать ноль, вы можете использовать константу BigDecimal.ZERO. Так что в вашем случае

BigDecimal feePercent = clientCardMemberGroup.getFeePerc(); 
if (feePercent.compareTo(BigDecimal.ZERO) != 0) { 
... 
} 
+0

Выглядит как отличное решение! Будет ли он также правильно возвращать значения, равные 0,12345? –

+1

Да. Почему нет. Если у вас не будет много операций умножения, деления и т. Д. С большой точностью - используйте примитивы, то для Number (6,4) – Jgrammer

+1

это значение будет использовано для определения точных сборов. F.e.fee составляет 3, процентное значение 0,1234, поэтому плата может быть примерно 0,00369. Будет ли BigDecimal правильным для этого? –

Смежные вопросы