简单而干净的java float to string conversion

时间:2015-06-10 15:13:10

标签: java string floating-point formatting type-conversion

这是一个非常简单的问题,但我对它的回答有多困难感到惊讶。即便是文件也没有给出明确而直接的答案。

你看,我只是试图将一个简单的float转换为一个字符串,结果只有一个十进制数字。例如:

String myfloatstring = "";
float myfloat = 33.33;
myfloatstring = Float.toString(myfloat);

确实会返回“33.33”。这很好,除了我正在寻找一种方法来将它截断为“33.3”。每当输入整数时,它也需要施加小数。例如,如果myfloat为10,则需要显示为“10.0”。奇怪的是,它并不像听起来那么简单。

非常感谢您给我的任何建议。

编辑#1:

目前,我并不关心小数点左边的数字。

2 个答案:

答案 0 :(得分:4)

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));

返回:

0.9
1
10.9

使用案例的第三个例子

答案 1 :(得分:0)

愚蠢的迂回方式:

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之间的浮点值。