【问题标题】:Simple and clean java float to string conversion简单干净的java浮点到字符串转换
【发布时间】:2015-08-25 22:44:02
【问题描述】:

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

你看,我只是想把一个简单的浮点数转换成一个字符串,这样结果就只有一个十进制数字。例如:

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

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

您能给我的任何建议将不胜感激。

编辑#1:

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

【问题讨论】:

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


【解决方案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

为您的案例使用第三个示例

【讨论】:

  • 我尝试了值为 10。此解决方案返回 '1e+01'。
  • 好的,这只是一个简单的例子,让您了解 String.format() 方法。我添加了另一个更适用的示例
【解决方案2】:

愚蠢的迂回做法:

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

【讨论】:

    猜你喜欢
    • 2022-11-13
    • 2011-11-25
    • 2014-10-26
    • 1970-01-01
    • 2013-10-03
    • 2014-01-16
    • 2019-06-22
    • 2016-06-14
    • 1970-01-01
    相关资源
    最近更新 更多