-3
public static int convertCelsiusToFahrenheit(Long celcious){
    return Math.round(celcious * 9/5 + 32);     
}

我正在尝试将其设置为我的 TextField。我无法在 中设置值Text Field,因为我得到了 NumberFormatException。我怎样才能用精度值发送它。

holder.textItem.setText(convertCelsiusToFahrenheit(Long.parseLong(
              custom.getTemperature())));

java.lang.NumberFormatException:无效的长:“32.2222222222222”

4

3 回答 3

2

将 a 转换floatlong

你可以只使用铸件

(long) custom.getTemperature()

但是,如果您只有一个表示浮点数的字符串,您可能需要更改您的转换函数,以接收浮点数。-

public static int convertCelsiusToFahrenheit(float celcious){
    return Math.round(celcious * 9.0f / 5.0f + 32);     
}

并通过

Float.parseFloat(custom.getTemperature())

不要忘记除9.0f / 5.0f而不是9 / 5,因为最后一个是整数除法,并且总是返回 1。

于 2013-04-17T11:53:30.410 回答
2

试试这个,

 holder.textItem.setText(" "+convertCelsiusToFahrenheit(Float.parseFloat(
                  custom.getTemperature())));

public static int convertCelsiusToFahrenheit(Float celcious){
            return Math.round(celcious * 9/5 + 32);     
        }
于 2013-04-17T12:05:01.400 回答
1

除了有关解析float等的答案外,请注意setText已重载。当它需要一个 int 时,它是一个资源 Id,所以创建一个string并给它:

代替:

holder.textItem.setText(convertCelsiusToFahrenheit(...));

做:

holder.textItem.setText(String.format("%d", convertCelsiusToFahrenheit(...)));

或者:

holder.textItem.setText(String.format("%d\x00B0 f", convertCelsiusToFahrenheit(...)));

应该给你“10° f”(未经测试)

于 2013-04-17T12:26:57.497 回答