如何强制使用两个小数点.00来存储浮点数

问题描述

我需要什么:我需要在Java(11)中存储一个带有两个小数的Float

我所做的事情:我使用BigDecimal类没有问题,即使小数部分为.00,小数位数也按预期进行

我的问题是什么:当我使用.floatValue()将BigDecimal转换为浮点数时,如果小数部分为.00,它将删除结尾的0

@H_502_13@一些例子

  1. 2.45(大十进制)以浮动形式转换为2.45
  2. 2.00(Big dec)作为Float转换为2.0 ==>我想要2.00

任何解决方案?谢谢!

编辑:将float作为字符串输出不是我想要的,我需要将变量存储为Float

我迅速检查了DecimalFormat,但此刻我只发现了将其格式化为字符串的方法

EDIT2:我正在使用REST api,我想返回一个的JSON,以将价格输出为Float(否则我将以大十进制形式返回)。每次返回2位小数的价格。如上所述,它适用于所有情况,但小数部分为.00(.01到.99可以正常工作)时除外。 JSON中的Float类型是我无法更改的约束。

解决方法

您不能存储带有两位小数的浮点数。浮动不是这样工作的。它们是数字的二进制表示形式,而不是十进制数。

您可以使用两位小数来格式化浮点数。