简单干净 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/10Integer.MIN_VALUE/10.

之间的浮点值