語言

Double.ValueOf 方法

定義

多載

名稱 Description
ValueOf(String)

回傳 Double 一個物件,該物件包含 double 由參數字串 s所代表的值。

ValueOf(Double)

回傳 Double 代表指定 double 值的實例。

ValueOf(String)

回傳 Double 一個物件,該物件包含 double 由參數字串 s所代表的值。

[Android.Runtime.Register("valueOf", "(Ljava/lang/String;)Ljava/lang/Double;", "")]
public static Java.Lang.Double ValueOf(string s);
[<Android.Runtime.Register("valueOf", "(Ljava/lang/String;)Ljava/lang/Double;", "")>]
static member ValueOf : string -> Java.Lang.Double

參數

s
String

需要解析的字串。

傳回

一個 Double 物件,持有由 String 參數所表示的值。

屬性

例外狀況

如果 string 無法解析為雙重值。

備註

回傳 Double 一個物件,該物件包含 double 由參數字串 s所代表的值。

snull則拋出 a NullPointerException

引出和拖尾的空白字元 s 則被忽略。 空白空間被移除,就像用方法 String#trim 一樣;也就是說,ASCII 空間和控制字元都被移除。 其餘的 s 應該構成詞彙語法規則所描述的 FloatValue

<blockquote><dl><dt>FloatValue:<dd>符號<sub>opt</sub>NaN<dd>簽名<>sub opt</sub>Infinity<dd>簽名<sub>opt</sub> 浮點 直文<dd>符號<sub>opt</sub> HexFloatingPointLiteral<dd>簽名整數</dl>

<dl><dt>HexFloatingPoint,直文: <dd>HexSignificand BinaryExponent floatTypeSuffix<sub>opt</sub></dl>

<dl><dt>HexSignificand:<dd>HexNumeral<dd>HexNumeral.<dd>0xHexDigits<sub>opt</sub>. HexDigits dd HexDigits<<>HexDigits./dl<>

<dl><dt>BinaryExponent:<dd>BinaryExponentIndicator SignedInteger</dl>

<dl><dt>BinaryExponentIndicator:<dd>p<dd>P</dl>

</區塊引用>

其中符號浮點字面值十六進數數、十六進位數字、簽名整數浮點類型後綴皆如引用Java語言規範</引用>的詞彙結構部分<>所定義,但不允許在數字間加底線。 若 s 不具 floatValue 形式,則拋出 a NumberFormatException 。 否則, s 則被視為在通常的「電腦化科學記號法」中代表精確的十進位值,或是精確的十六進位值;這個精確的數值接著會被概念性地轉換成一個「無限精確」的二進位值,然後再依照 IEEE 754 浮點運算的四捨五入到最近規則將其捨入為型, double 該規則包括保留零值的符號。

請注意,四捨五入到最近規則同時也意味著溢出與下流行為;若 的s精確值大小足夠大(大於或等於 (#MAX_VALUE + Math#ulp(double) ulp(MAX_VALUE)/2),四捨五入double為 會得到無限大;若 的s精確值大小足夠小(小於或等於 #MIN_VALUE/2),則四捨五入為浮點會得到零。

最後,捨五入 Double 後會回傳一個代表該 double 值的物件。

要解讀浮點數值的局部字串表示法,請使用 的 java.text.NumberFormat子類。

請注意,尾隨格式指定符,也就是決定浮點數文字類型(1.0f 為值;float1.0d值)的指定符,是否double<><會影響此方法的結果。> 換句話說,輸入字串的數值會直接轉換成目標浮點型態。 兩步轉換序列,字串 到 floatfloat 接著 到 double,是 <em>not</em> 等價於直接將字串轉換成 double。 例如,float文字等於 ;0.1fdouble0.10000000149011612float文字代表的數值與0.1fdouble文字 不同。0.1 (數值 0.1 無法精確表示為二進位浮點數。)

為避免在無效字串上呼叫此方法並拋出 a NumberFormatException ,以下正則表達式可用來篩選輸入字串:

{@code
             final String Digits     = "(\\p{Digit}+)";
             final String HexDigits  = "(\\p{XDigit}+)";
             // an exponent is 'e' or 'E' followed by an optionally
             // signed decimal integer.
             final String Exp        = "[eE][+-]?"+Digits;
             final String fpRegex    =
                 ("[\\x00-\\x20]*"+  // Optional leading "whitespace"
                  "[+-]?(" + // Optional sign character
                  "NaN|" +           // "NaN" string
                  "Infinity|" +      // "Infinity" string

                  // A decimal floating-point string representing a finite positive
                  // number without a leading sign has at most five basic pieces:
                  // Digits . Digits ExponentPart FloatTypeSuffix
                  //
                  // Since this method allows integer-only strings as input
                  // in addition to strings of floating-point literals, the
                  // two sub-patterns below are simplifications of the grammar
                  // productions from section 3.10.2 of
                  // The Java Language Specification.

                  // Digits ._opt Digits_opt ExponentPart_opt FloatTypeSuffix_opt
                  "((("+Digits+"(\\.)?("+Digits+"?)("+Exp+")?)|"+

                  // . Digits ExponentPart_opt FloatTypeSuffix_opt
                  "(\\.("+Digits+")("+Exp+")?)|"+

                  // Hexadecimal strings
                  "((" +
                   // 0[xX] HexDigits ._opt BinaryExponent FloatTypeSuffix_opt
                   "(0[xX]" + HexDigits + "(\\.)?)|" +

                   // 0[xX] HexDigits_opt . HexDigits BinaryExponent FloatTypeSuffix_opt
                   "(0[xX]" + HexDigits + "?(\\.)" + HexDigits + ")" +

                   ")[pP][+-]?" + Digits + "))" +
                  "[fFdD]?))" +
                  "[\\x00-\\x20]*");// Optional trailing "whitespace"

             if (Pattern.matches(fpRegex, myString))
                 Double.valueOf(myString); // Will not throw NumberFormatException
             else {
                 // Perform suitable alternative action
             }
            }

Java 文件 java.lang.Double.valueOf(java.lang.String)

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

另請參閱

適用於

ValueOf(Double)

回傳 Double 代表指定 double 值的實例。

[Android.Runtime.Register("valueOf", "(D)Ljava/lang/Double;", "")]
public static Java.Lang.Double ValueOf(double d);
[<Android.Runtime.Register("valueOf", "(D)Ljava/lang/Double;", "")>]
static member ValueOf : double -> Java.Lang.Double

參數

d
Double

雙倍價值。

傳回

一個 Double 代表 d的實例。

屬性

備註

回傳 Double 代表指定 double 值的實例。 若不需要新 Double 實例,通常應優先使用此 #Double(double)方法,因為此方法透過快取頻繁請求的值,可能帶來顯著更好的空間與時間效能。

已在1.5中新增。

Java 文件 java.lang.Double.valueOf(double)

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於