我的浮点值像 0.152545 我只想要 0.1f。
这怎么可能..
通过使用字符串,我得到了字符串值。下面的代码显示了结果。
String pass = pass.substring(0, Math.min(pass.length(), 3));
pass=pass+"f";
这给了我像 0.1f 这样的字符串值,但我只想要像 0.1f 这样的浮点值。
我的浮点值像 0.152545 我只想要 0.1f。
这怎么可能..
通过使用字符串,我得到了字符串值。下面的代码显示了结果。
String pass = pass.substring(0, Math.min(pass.length(), 3));
pass=pass+"f";
这给了我像 0.1f 这样的字符串值,但我只想要像 0.1f 这样的浮点值。
这将是您应该使用的适当位置DecimalFormat
,并且.#f
将成为您案例的模式。
一些相关的问题 -
您可以使用 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();
你可以这样做:
DecimalFormat format = new DecimalFormat("0.0");
format.setRoundingMode(RoundingMode.DOWN);
format.setMaximumFractionDigits(1);
System.out.println(format.format(0.152545) + "f");
怎么样
float new = Math.round( 10.0 * f ) / 10.0;
这并不精确,因为浮点数/双精度数只是 1/2^n 的有限级数之和,但对您来说可能已经足够了。
也许您应该考虑用一个有效的小数点表示浮点数并在内部保持全精度?
干杯,