Проблема проста:String to Float не работает в java?
float f1 = Float.parseFloat("41.975779")
//Value for f1 is 41.97578 -> An error of 1ppm
И еще хуже !!
float f2 = Float.parseFloat("41.975645")
//Value for f2 is 41.975643 -> An error of 2ppm
Это не имеет значения, если я использую Float.parseFloat или Float.valueOf, они оба дают одинаковый результат.
Примечание: Эта проблема возникает при программировании в android, я не пробовал ее в pure-java, но я предполагаю, что это будет тот же результат.
Используйте класс BigDecimal для произвольной точности подписанных поплавков. Есть способы конвертировать String в него, искать другие подобные сообщения для этого. – Kon
Согласно предложению @ Kon, используйте BigDecimal. Не все * фракции могут быть точно представлены в двоичном формате, следовательно, ошибка. Дополнительную информацию см. Связанный вопрос. – npinti