简单干净的java浮点到字符串转换
这是一个非常简单的问题,但我很惊讶回答起来有多么困难。即使是文档也没有给出一个明确而直接的答案 你看,我只是想把一个简单的浮点转换成一个字符串,这样结果只有一个十进制数字。例如:简单干净的java浮点到字符串转换,java,string,floating-point,formatting,type-conversion,Java,String,Floating Point,Formatting,Type Conversion,这是一个非常简单的问题,但我很惊讶回答起来有多么困难。即使是文档也没有给出一个明确而直接的答案 你看,我只是想把一个简单的浮点转换成一个字符串,这样结果只有一个十进制数字。例如: String myfloatstring = ""; float myfloat = 33.33; myfloatstring = Float.toString(myfloat); 这确实返回了“33.33”。这很好,不过我正在寻找一种方法,将小数点截断为“33.3”。每当输入整数时,它还需要加上一个小数。例如,如果
String myfloatstring = "";
float myfloat = 33.33;
myfloatstring = Float.toString(myfloat);
这确实返回了“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));
返回:
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)
。此外,这仅适用于介于整数.MAX_VALUE/10
和整数.MIN_VALUE/10
之间的浮点值。此外,如果您希望对实际值进行更多控制,以便能够精确地取整或显示,一种技术是使用整数和纯标量数学,然后把小数点放在只显示的地方,我试着用10的值。此解决方案返回“1e+01”。好的,这只是一个简单的示例,用于向您指出String.format()方法。我添加了另一个更适用的示例