Вам не нужно все программировать
Я устал от всего этого, но тогда все должно быть включено в программу, как будто это всегда быстрее. все должно быть в сети, все должно быть сделано через компьютер. Пожалуйста, просто используйте ручку и бумагу. это быстрее и требует меньшего количества обслуживания.
Прекращение поддержки устарело. Части API помечаются как устаревшие только в исключительных случаях.
Итак, запускайте FindBugs как часть процесса сборки. FindBugs имеет API-интерфейс детектора PlugIn, а также имеет открытый исходный код (LGPL, IIRC).
Учитывая правильность поведения BigDecimal (double)
, на мой взгляд, я не уверен, что это действительно так было бы такой проблемой.
Я бы не совсем согласился с формулировкой документации в конструкторе BigDecimal (double)
:
Результаты этого конструктора могут быть несколько непредсказуемо . Можно Предположим, что запись
new BigDecimal (0.1)
в Java создаетBigDecimal
, что в точности равно0,1
(немасштабированное значение1
, со шкалой1
), но фактически оно равно к0,1000000000000000055511151231257827021181583404541015625
.
(Курсив добавлен.)
Вместо того, чтобы говорить непредсказуемо , я думаю, что формулировка должна быть , это было бы даже неожиданно быть неожиданным поведением для тех, кто не осведомлен об ограничениях представления десятичных чисел с значениями с плавающей запятой .
Если помнить, что значения с плавающей запятой не могут точно представлять все десятичные значения, значение, возвращаемое с использованием BigDecimal (0.1)
, является 0.1000000000000000055511151231257827021181583404541015625
, на самом деле имеет смысл.
Если BigDecimal (double) экземпляр BigDecimal
создан экземпляром Big 1125 конструктор согласован, тогда я бы сказал, что результат предсказуем.
Я предполагаю, почему конструктор BigDecimal (double)
не является устаревшим, потому что его поведение можно считать правильным, и пока кто-то знает, как работают представления с плавающей запятой, поведение конструктора это не так уж и удивительно.
Этот конкретный конструктор, как и все операции с плавающей запятой, является приближением. На самом деле он не сломан, просто есть недостатки.
Просто проведите свое исследование, подойдите к нему осторожно, и вы не получите никаких сюрпризов. Вы сталкиваетесь с тем же самым при назначении десятичных литералов двойным / плавающим.