Double.ValueOf 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| ValueOf(String) |
回傳 |
| ValueOf(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所代表的值。
若 s , null則拋出 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 為值;float為1.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 所創建與分享的作品,並依授權條款所描述的使用進行修改。