Double.ValueOf 方法

定义

重载

名称 说明
ValueOf(Double)

返回一个 Double 表示指定 double 值的实例。

ValueOf(String)

返回一个 Double 对象,该对象包含 double 由参数字符串 s表示的值。

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.lang.Double.valueOf(double)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于

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 的值的对象。

属性

例外

如果无法解析为双精度值,则为 <a0/a0>。

注解

返回一个 Double 对象,该对象包含 double 由参数字符串 s表示的值。

如果是s,则会引发 aNullPointerExceptionnull

将忽略前导和尾随空格字符 s 。 空格会像方法 String#trim 一样删除;也就是说,删除 ASCII 空格和控制字符。 其余部分 s 应构成 FloatValue ,如词法语法规则所述:

<blockquote><dl><dt>FloatValue:<ddSign sub>opt/sub>dd Sign<sub opt</sub Infinity<dd <><Sign sub opt/>sub FloatingPointLiteraldd><Sign sub>opt</sub> HexFloatingPointLiteral<<dd>SignedInteger<</dl><>>>NaN<>>

<dl><dt>HexFloatingPointLiteral: <ddHexSignificand BinaryExponent FloatTypeSuffix<sub>opt</sub></dl>>

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

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

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

</blockquote>

其中,SignFloatingPointLiteralHexNumeralHexDigitsSignedIntegerFloatTypeSuffix 在引用>“Java语言规范</引用>”的<词法结构部分中定义,但以下划线在数字之间不接受。 如果没有 sFloatValue 的形式,则会引发 a NumberFormatException 。 否则, s 被视为表示通常的“计算机化科学表示法”或精确十六进制值中的精确十进制值;然后,此精确数值在概念上转换为“无限精确”二进制值,然后由通常的 IEEE 754 浮点算术规则舍入为类型 double ,其中包括保留零值的符号。

请注意,舍入到最近的规则也意味着溢出和流入行为:如果精确值s的大小足够大(大于或等于 (#MAX_VALUEMath#ulp(double) ulp(MAX_VALUE) + /2),舍入double将导致无穷大,如果精确值s的大小足够小(小于或等于 #MIN_VALUE/2),则舍入到浮点将导致零。

最后,在舍入 Double 表示此值 double 的对象后返回。

若要解释浮点值的本地化字符串表示形式,请使用 的 java.text.NumberFormat子类。

请注意,尾随格式说明符、确定浮点文本的类型(1.0f 是值 float ; 1.0ddouble 值)的说明符、 <em>不<影响> 此方法的结果。 换句话说,输入字符串的数值直接转换为目标浮点类型。 转换的两步序列(后跟到的字符串float)与<<直接转换字符串double等效于 em>/em>。doublefloat 例如,文本等于值;文本float0.1f表示与文本0.1不同的数值double0.10000000149011612double0.1ffloat (数值 0.1 不能在二进制浮点数中准确表示。

为了避免对无效字符串调用此方法并 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.lang.Double.valueOf(java.lang.String)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

另请参阅

适用于