Если вам нужны точные десятичные значения, используйте BigDecimal
.В противном случае узнайте, как работает двоичная система с плавающей запятой, и будьте готовы справиться с последствиями.(Конечно, даже BigDecimal
не сможет точно представить что-то вроде «третьего».)
Обратите внимание, что довольно странно вызывать Float.parseFloat
, но присваивать результат double
... было бы более привычным либо присвоить результат float
или , чтобы использовать Double.parseDouble
для начала.Однако в любом случае результат будет , а не точно равным 9,99.Число 9.99 не может быть представлено в двоичной форме с плавающей запятой точно так же, как результат деления один на три может быть записан точно в десятичном представлении.
У меня нет статей о двоичной двоичной переменной с плавающей запятой Javaв частности, но не должно быть никаких существенных различий между этим и двоичной плавающей точкой C #, которую я делаю имею статью о .
Какой тип выСледует использовать действительно зависит от семантики того, что вы представляете.Я использую эмпирическое правило, согласно которому искусственные «искусственные» значения, такие как деньги, лучше всего представлять в десятичных форматах (например, BigDecimal
), тогда как «естественные» значения, такие как высота и ширина, более подходят как float
/ double
.