Во-первых, вы должны узнать о математике с плавающей точкой. Это не относится к java, но позволит вам принимать обоснованные решения позже, например, когда будет нормально использовать примитивы Java, такие как float
и double
. Соответствующие темы включают (скопировано с курса, который я изучал в области научных вычислений ):
- Источники ошибок: округление, ошибка усечения, неполная сходимость, статистическая ошибка,
программная ошибка.
- Компьютерная арифметика с плавающей точкой и стандарт IEEE.
- Ошибка усиления при отмене.
- Кондиционирование, номер условия и усиление ошибки.
Это приводит вас к принятию решения о том, использовать ли Java BigDecimal
, BigInteger
и т. Д. Существует множество вопросов и ответов об этом уже.
Далее вы достигнете производительности, включая как процессор, так и память. Вы, вероятно, найдете различные практические правила, такие как «автобоксирование - серьезная проблема с производительностью». Но, как всегда, лучшее, что нужно сделать, это профилировать свое собственное приложение. Например, скажем, кто-то настаивает, что некоторая оптимизация важна, даже если она влияет на удобочитаемость. Если эта оптимизация не имеет значения для вашего приложения, не делайте этого!
Наконец, где это возможно, часто полезно использовать библиотеку для числовых операций. Ваша первая попытка, вероятно, будет медленнее и более ошибочной, чем существующие библиотеки. Например, ради бога, не реализуйте свою собственную процедуру линейного программирования.