Я написал конвертер, который использует Double.parseDouble для преобразования строки в длинное значение. Поскольку пользователь несколько раз вводит ввод в формате xx.xx вместо чистого целочисленного формата. Есть ли возможность потерять информацию при анализе длинного значения с помощью Double.parseDouble?Могу ли я хранить длинное значение точно в двойной переменной без ошибки округления?
static Long toLong(Object object) {
if (object == null) {
return null;
}
if (object instanceof Number) {
return ((Number) object).longValue();
}
return new Double(Double.parseDouble(object.toString().trim())).longValue();
}
Почему бы не попробовать? Введите длинную строку и посмотрите, что произойдет. Таким образом, вы также можете увидеть, сколько информации теряется. – frankenapps
Да, есть. Оба используют 64 бита. Но Double должен иметь возможность хранить десятичные числа, тогда как Long - нет. Очевидно, что Double не может хранить столько точных целых значений, сколько это делает. –