Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单干净的java浮点到字符串转换_Java_String_Floating Point_Formatting_Type Conversion - Fatal编程技术网

简单干净的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()方法。我添加了另一个更适用的示例