? asked in 電腦與網際網路程式設計 · 1 decade ago

關於 float 的轉換 有很大的問題

rss[3]=23.5是從資料庫抓出來的值 應該是字串 所以 我把它轉成float

但是為什麼還是不能直接使用?

會出現錯誤 operator * cannot be applied to java.lang.Float,int

float add11=hvshour * 60;

^

1 error

程式碼如下:

[code]

hvshour = new Float(rss[3]);

float add11=hvshour * 60;

[/code]

2 Answers

Rating
  • Samuel
    Lv 5
    1 decade ago
    Favorite Answer

    1. java 的原始(primitive)資料型態都是英文小寫字母, 如 byte, short, int, long, float, double, boolean. 同時也都有一個相對的包裝(wrapping)類別, 是物件(object), 都是大寫開頭, 分別是 Byte, Short, Integer, Long, Float, Double, Boolean. 物件是要用 new 來產生的, 原始資料型態只要直接給值就可.2. 所以你的錯誤訊息是由於你把他們混用了, 解法不只一種, 如果你要的是直接使用(不是物件), 改成如下即可 :float hvshour; // hvshour 宣告為原始形態(小寫)hvshour = Float.parseFloat(rss[3]); float add11=hvshour * 60;//parseFloat是Float的靜態函式, 不需new即可使用, 功能是傳回一個值等於傳入字串的 float 使用物件如下 :Float hvshour;hvshour = new Float(rss[3]); float add11=hvshour.floatValue() * 60; //floatValue是Float的函式, 功能是傳回一個相當於本物件值的 float *** 注意大小寫是不同的

    2006-10-24 23:38:42 補充:

    java jdk 1.5 之後的版本加入 wrapping 和 primitive 之間自動轉換的功能, 所以你的那段程式碼在 jdk 1.5(和 1.6)之後不會出錯, 但是你最好還是了解一下兩者的差異.

  • 1 decade ago

    上了一課,謝謝!

Still have questions? Get your answers by asking now.