简单干净 java 浮点数到字符串的转换
Simple and clean java float to string conversion
这是一个非常简单的问题,但令我惊讶的是回答起来如此困难。甚至文档也没有给出明确直接的答案。
你看,我只是想将一个简单的浮点数转换为字符串,这样结果只有一位小数。例如:
String myfloatstring = "";
float myfloat = 33.33;
myfloatstring = Float.toString(myfloat);
这确实 return“33.33”。这很好,除了我正在寻找一种方法让它将小数截断为“33.3”。每当输入整数时,它还需要加上小数点。例如,如果 myfloat 为 10,则需要显示为“10.0”。奇怪的是并不像听起来那么简单。
如果您能给我任何建议,我们将不胜感激。
编辑 #1:
目前,我不关心小数点左边的数字。
System.out.println(String.format("%.1g%n", 0.9425));
System.out.println(String.format("%.1g%n", 0.9525));
System.out.println(String.format( "%.1f", 10.9125));
returns:
0.9
1
10.9
针对您的情况使用第三个示例
愚蠢的迂回方式:
float myFloat = 33.33f;
int tenTimesFloat = (int) (myFloat * 10); // 333
String result = (tenTimesFloat / 10) + "." + (tenTimesFloat % 10); // 33.3
请注意,这会截断数字,因此 10.99
将转换为 10.9
。要四舍五入,请使用 Math.round(myFloat * 10)
而不是 (int) (myFloat * 10)
。此外,这仅适用于 Integer.MAX_VALUE/10
和 Integer.MIN_VALUE/10
.
之间的浮点值
这是一个非常简单的问题,但令我惊讶的是回答起来如此困难。甚至文档也没有给出明确直接的答案。
你看,我只是想将一个简单的浮点数转换为字符串,这样结果只有一位小数。例如:
String myfloatstring = "";
float myfloat = 33.33;
myfloatstring = Float.toString(myfloat);
这确实 return“33.33”。这很好,除了我正在寻找一种方法让它将小数截断为“33.3”。每当输入整数时,它还需要加上小数点。例如,如果 myfloat 为 10,则需要显示为“10.0”。奇怪的是并不像听起来那么简单。
如果您能给我任何建议,我们将不胜感激。
编辑 #1:
目前,我不关心小数点左边的数字。
System.out.println(String.format("%.1g%n", 0.9425));
System.out.println(String.format("%.1g%n", 0.9525));
System.out.println(String.format( "%.1f", 10.9125));
returns:
0.9
1
10.9
针对您的情况使用第三个示例
愚蠢的迂回方式:
float myFloat = 33.33f;
int tenTimesFloat = (int) (myFloat * 10); // 333
String result = (tenTimesFloat / 10) + "." + (tenTimesFloat % 10); // 33.3
请注意,这会截断数字,因此 10.99
将转换为 10.9
。要四舍五入,请使用 Math.round(myFloat * 10)
而不是 (int) (myFloat * 10)
。此外,这仅适用于 Integer.MAX_VALUE/10
和 Integer.MIN_VALUE/10
.