-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

をに変換するfloatにはlong

あなたはただキャストを使うことができます

(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 に答える
1

などの解析に関する回答に加えて、オーバーロードされfloatていることに注意してくださいsetText。int を取る場合、それはリソース ID であるため、astringを作成して次のように指定します。

それ以外の:

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 に答える