2015-01-23 2 views
0

Мне нужно хранить точные значения, которые я получаю из базы данных, в csv. Когда я пытаюсь сохранить 0, он хранится как 0.0 в csv. Хотя он незначителен, клиент хочет, чтобы то же самое значение сохранялось в базе данных.Печать значения, как в Java

double c = Double.valueOf("0"); 

Я получаю 0.0 в CSV. Еще одно ограничение заключается в том, что я не должен использовать какие-либо операции со строками для получения точных значений.
Есть ли способ получить точные значения?

+1

'' Int я = Integer.valueOf ("0") ''? – ThreeFx

+0

Нет, это не единственные значения. Я получаю другие двойные значения, также как и 15.3, чтобы это повлияло. –

+0

Какое значение вы храните в базе данных, например, integer или double? Если вы используете double, то он добавит десятичную точку для того же самого. Либо вы можете преобразовать его в Integer, либо вы можете изменить тип данных для этого значения. Дайте мне знать, если вы все еще сталкиваетесь с какой-либо проблемой. – Ranjitsinh

ответ

2

Вы могли бы просто сделать это: d % 1 == 0, чтобы увидеть, если какой-либо двойной d целиком.

если да вы Integer.valueOf(number)

еще хранить его, как это

+0

Это похоже на простейшее решение. – sauv0168

+0

@ sauv0168 да это – eLemEnt

0

Вы используете Double здесь, я думаю, вы должны использовать Long, Double будут сохранены как 0,0 его естественное поведение

1

Есть ли способ, где я могу получить точные значения?

Не с double. Подобно десятичной (например, 1/3), есть числа, которые не могут быть представлены без потери точности в плавающей запятой (вот почему 0.1+0.2 is 0.30000000000000004). При этом BigDecinal имеет stripTrailingZeros().

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