0

我的浮点值像 0.152545 我只想要 0.1f。
这怎么可能..
通过使用字符串,我得到了字符串值。下面的代码显示了结果。

 String pass = pass.substring(0, Math.min(pass.length(), 3));
 pass=pass+"f";

这给了我像 0.1f 这样的字符串值,但我只想要像 0.1f 这样的浮点值。

4

4 回答 4

6

这将是您应该使用的适当位置DecimalFormat,并且.#f将成为您案例的模式。

在 java 中查找有关数字格式的更多信息

一些相关的问题 -

于 2013-06-18T13:07:07.490 回答
0

您可以使用 BigDecimal。

float f = 0.152545f;
BigDecimal bd = new BigDecimal(f);
bd = bd.setScale(1, RoundingMode.DOWN);
f = bd.floatValue();

即使您将浮点数存储为字符串也可以正常工作。

String floatAsString = "0.152545";
BigDecimal bd = new BigDecimal(floatAsString);
bd = bd.setScale(1, RoundingMode.DOWN);
float f = bd.floatValue();
于 2013-06-18T13:19:25.110 回答
0

你可以这样做:

DecimalFormat format = new DecimalFormat("0.0");
format.setRoundingMode(RoundingMode.DOWN);
format.setMaximumFractionDigits(1);
System.out.println(format.format(0.152545) + "f");
于 2013-06-18T13:28:53.467 回答
-1

怎么样

float new = Math.round( 10.0 * f ) / 10.0;

这并不精确,因为浮点数/双精度数只是 1/2^n 的有限级数之和,但对您来说可能已经足够了。

也许您应该考虑用一个有效的小数点表示浮点数并在内部保持全精度

干杯,

于 2013-06-18T13:07:13.637 回答