繁体   English   中英

简单干净的Java float到字符串转换

[英]Simple and clean java float to string conversion

这是一个非常简单的问题,但我对回答的难度感到惊讶。 甚至文档也没有给出明确而直接的答案。

您看,我只是在尝试将简单的float转换为字符串,以使结果仅包含一个十进制数字。 例如:

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) 同样,这仅适用于介于Integer.MAX_VALUE/10Integer.MIN_VALUE/10之间的浮点值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM