我有一个要求,要像下面这样在Java中获取浮点值
1.1
1.10
10.10
当我将其转换为字符串时,我希望它的使用方式与
相同"1.1"
"1.10"
"10.10"
但是,当我使用以下方法时,
float fa = 25.50f;//Float.parseFloat("25.5");
String s = Float.toString(fa);
System.out.println(s); // i want the output to be 25.50, but it gives me 25.5
结果证明如下
"1.1"
"1.1"
"10.1"
有人可以建议我如何用Java中的零将1.10
设为"1.10"
答案 0 :(得分:2)
如果要存储整数,为什么不只使用字符串?
我想如果您从某个地方获取“ 1.10”,您将其作为字符串获取(或者您将仅获取“ 1.1”)。
答案 1 :(得分:1)
(不需要)像10.10f这样的浮点值。可能有,但事实是:当您写下浮点文字时,您不应该期望它真的真正看起来像您输入的值。
仅当将数字表示为字符串时,您才能遵守有关格式的此类要求。
换句话说,您可能应该阅读this。
答案 2 :(得分:1)
如何打印它取决于数字的格式,float
只是一个值,它的实际表示形式是二进制而不是十进制。
String s = String.format("%.2f", 25.5f); // 25.50
我强烈建议您使用double
,它使用起来更简单,并且精度高出五万亿倍。
答案 3 :(得分:0)
如果您的浮点值来自字符串,我建议采用以下解决方案:
public static void main(String[] args) {
String floatValue = "25.20";
String[] splittedFloat = floatValue.split("[.]");
int numberOfDecimalPlaces = splittedFloat[1].length();
float value = Float.valueOf(floatValue);
System.out.printf("%." + numberOfDecimalPlaces + "f\n", value);
}
首先,您将值声明为String。然后用“点”将其拆分,并检查小数点后的长度。然后,将其解析为float值,然后使用该值执行任何操作。最后,您可以像以前一样用它打印格式,因为您有此浮点值的小数位数。
此代码的输出是:
25.20
由于实际值为25.2,且0正在格式化,因此无法将25.20的值保留在float中。