Primitive Type f64
1.0.0 ·Expand description
Implementations§
source§impl f64
impl f64
sourcepub fn round_ties_even(self) -> f64
🔬This is a nightly-only experimental API. (round_ties_even
#96710)
pub fn round_ties_even(self) -> f64
round_ties_even
#96710)1.35.0 · sourcepub fn copysign(self, sign: f64) -> f64
pub fn copysign(self, sign: f64) -> f64
返回一个数字,该数字由 self
的大小和 sign
的符号组成。
如果 self
和 sign
的符号相同,则等于 self
,否则等于 -self
。
如果 self
是 NaN,则返回符号位为 sign
的 NaN。
但是请注意,通常不能保证在算术运算中保留 NaN 上的符号位。
有关详细信息,请参见 将 NaN 解释为特殊值。
Examples
let f = 3.5_f64;
assert_eq!(f.copysign(0.42), 3.5_f64);
assert_eq!(f.copysign(-0.42), -3.5_f64);
assert_eq!((-f).copysign(0.42), 3.5_f64);
assert_eq!((-f).copysign(-0.42), -3.5_f64);
assert!(f64::NAN.copysign(1.0).is_nan());
Runsourcepub fn mul_add(self, a: f64, b: f64) -> f64
pub fn mul_add(self, a: f64, b: f64) -> f64
融合乘法加法。
仅用一个舍入误差计算 (self * a) + b
,比未融合的乘法加法产生更准确的结果。
如果目标体系结构具有专用的 fma
CPU 指令,则使用 mul_add
的性能可能比未融合的乘加性能更高。
但是,这并不总是正确的,并且在很大程度上取决于设计算法时要考虑特定的目标硬件。
Examples
let m = 10.0_f64;
let x = 4.0_f64;
let b = 60.0_f64;
// 100.0
let abs_difference = (m.mul_add(x, b) - ((m * x) + b)).abs();
assert!(abs_difference < 1e-10);
Run1.38.0 · sourcepub fn div_euclid(self, rhs: f64) -> f64
pub fn div_euclid(self, rhs: f64) -> f64
计算欧几里得除法,即 rem_euclid
的匹配方法。
这将计算整数 n
,如 self = n * rhs + self.rem_euclid(rhs)
。
换句话说,结果是将 self / rhs
舍入为 n
的整数 n
。
Examples
let a: f64 = 7.0;
let b = 4.0;
assert_eq!(a.div_euclid(b), 1.0); // 7.0 > 4.0 * 1.0
assert_eq!((-a).div_euclid(b), -2.0); // -7.0 >= 4.0 * -2.0
assert_eq!(a.div_euclid(-b), -1.0); // 7.0 >= -4.0 * -1.0
assert_eq!((-a).div_euclid(-b), 2.0); // -7.0 >= -4.0 * 2.0
Run1.38.0 · sourcepub fn rem_euclid(self, rhs: f64) -> f64
pub fn rem_euclid(self, rhs: f64) -> f64
计算 self (mod rhs)
的最小非负余数。
特别地,在大多数情况下,返回值 r
满足 0.0 <= r < rhs.abs()
。
但是,由于浮点舍入误差,如果 self
的幅值和 self < 0.0
远小于 rhs.abs()
,则可能会导致 r == rhs.abs()
违反数学定义。
此结果不是函数的余域的元素,但它是实数中最接近的浮点数,因此近似满足属性 self == self.div_euclid(rhs) * rhs + self.rem_euclid(rhs)
。
Examples
let a: f64 = 7.0;
let b = 4.0;
assert_eq!(a.rem_euclid(b), 3.0);
assert_eq!((-a).rem_euclid(b), 1.0);
assert_eq!(a.rem_euclid(-b), 3.0);
assert_eq!((-a).rem_euclid(-b), 1.0);
// 由于舍入误差而造成的限制
assert!((-f64::EPSILON).rem_euclid(3.0) != 0.0);
Runsourcepub fn abs_sub(self, other: f64) -> f64
👎Deprecated since 1.10.0: you probably meant (self - other).abs()
: this operation is (self - other).max(0.0)
except that abs_sub
also propagates NaNs (also known as fdim
in C). If you truly need the positive difference, consider using that expression or the C function fdim
, depending on how you wish to handle NaN (please consider filing an issue describing your use-case too).
pub fn abs_sub(self, other: f64) -> f64
(self - other).abs()
: this operation is (self - other).max(0.0)
except that abs_sub
also propagates NaNs (also known as fdim
in C). If you truly need the positive difference, consider using that expression or the C function fdim
, depending on how you wish to handle NaN (please consider filing an issue describing your use-case too).sourcepub fn atan2(self, other: f64) -> f64
pub fn atan2(self, other: f64) -> f64
计算弧度 self
(y
) 和 other
(x
) 的四个象限反正切。
x = 0
,y = 0
:0
x >= 0
:arctan(y/x)
->[-pi/2, pi/2]
y >= 0
:arctan(y/x) + pi
->(pi/2, pi]
y < 0
:arctan(y/x) - pi
->(-pi, -pi/2)
Examples
// 从正 x 轴逆时针测量的正角度 -pi/4 弧度 (顺时针 45 度)
let x1 = 3.0_f64;
let y1 = -3.0_f64;
// 3pi/4 弧度 (逆时针 135 度)
let x2 = -3.0_f64;
let y2 = 3.0_f64;
let abs_difference_1 = (y1.atan2(x1) - (-std::f64::consts::FRAC_PI_4)).abs();
let abs_difference_2 = (y2.atan2(x2) - (3.0 * std::f64::consts::FRAC_PI_4)).abs();
assert!(abs_difference_1 < 1e-10);
assert!(abs_difference_2 < 1e-10);
Runsource§impl f64
impl f64
1.43.0 · sourcepub const MANTISSA_DIGITS: u32 = 53u32
pub const MANTISSA_DIGITS: u32 = 53u32
基数中的有效位数 2.
1.43.0 · sourcepub const EPSILON: f64 = 2.2204460492503131E-16f64
pub const EPSILON: f64 = 2.2204460492503131E-16f64
f64
的 机器精度 值。
这是 1.0
与下一个较大的可表示数字之间的差异。
1.43.0 · sourcepub const MIN_POSITIVE: f64 = 2.2250738585072014E-308f64
pub const MIN_POSITIVE: f64 = 2.2250738585072014E-308f64
最小正 f64
正值。
1.43.0 · sourcepub const MIN_10_EXP: i32 = -307i32
pub const MIN_10_EXP: i32 = -307i32
最小可能的标准幂为 10 指数。
1.43.0 · sourcepub const MAX_10_EXP: i32 = 308i32
pub const MAX_10_EXP: i32 = 308i32
最大可能功效为 10 指数。
1.43.0 · sourcepub const NAN: f64 = NaNf64
pub const NAN: f64 = NaNf64
不是数字 (NaN)。
请注意,IEEE 754 不只定义一个 NaN 值; 过多的位模式被认为是 NaN。 此外,该标准区分了 “signaling” 和 “quiet” NaN,并允许检查其 “payload” (位模式中未指定的位)。 不保证此特性等于任何特定的 NaN 位模式,并且不保证其表示在 Rust 版本和目标平台上的稳定性。
1.43.0 · sourcepub const NEG_INFINITY: f64 = -Inff64
pub const NEG_INFINITY: f64 = -Inff64
负无穷大 (−∞)。
const: unstable · sourcepub fn is_nan(self) -> bool
pub fn is_nan(self) -> bool
如果此值为 NaN,则返回 true
。
let nan = f64::NAN;
let f = 7.0_f64;
assert!(nan.is_nan());
assert!(!f.is_nan());
Runconst: unstable · sourcepub fn is_infinite(self) -> bool
pub fn is_infinite(self) -> bool
如果此值是正无穷大或负无穷大,则返回 true
,否则返回 false
。
let f = 7.0f64;
let inf = f64::INFINITY;
let neg_inf = f64::NEG_INFINITY;
let nan = f64::NAN;
assert!(!f.is_infinite());
assert!(!nan.is_infinite());
assert!(inf.is_infinite());
assert!(neg_inf.is_infinite());
Runconst: unstable · sourcepub fn is_finite(self) -> bool
pub fn is_finite(self) -> bool
如果此数字既不是无穷大也不是 NaN,则返回 true
。
let f = 7.0f64;
let inf: f64 = f64::INFINITY;
let neg_inf: f64 = f64::NEG_INFINITY;
let nan: f64 = f64::NAN;
assert!(f.is_finite());
assert!(!nan.is_finite());
assert!(!inf.is_finite());
assert!(!neg_inf.is_finite());
Run1.53.0 (const: unstable) · sourcepub fn is_subnormal(self) -> bool
pub fn is_subnormal(self) -> bool
如果数字为 subnormal,则返回 true
。
let min = f64::MIN_POSITIVE; // 2.2250738585072014e-308_f64
let max = f64::MAX;
let lower_than_min = 1.0e-308_f64;
let zero = 0.0_f64;
assert!(!min.is_subnormal());
assert!(!max.is_subnormal());
assert!(!zero.is_subnormal());
assert!(!f64::NAN.is_subnormal());
assert!(!f64::INFINITY.is_subnormal());
// `0` 和 `min` 之间的值是次标准的。
assert!(lower_than_min.is_subnormal());
Runconst: unstable · sourcepub fn is_normal(self) -> bool
pub fn is_normal(self) -> bool
如果数字既不是零、无穷大、subnormal 或 NaN,则返回 true
。
let min = f64::MIN_POSITIVE; // 2.2250738585072014e-308f64
let max = f64::MAX;
let lower_than_min = 1.0e-308_f64;
let zero = 0.0f64;
assert!(min.is_normal());
assert!(max.is_normal());
assert!(!zero.is_normal());
assert!(!f64::NAN.is_normal());
assert!(!f64::INFINITY.is_normal());
// `0` 和 `min` 之间的值是次标准的。
assert!(!lower_than_min.is_normal());
Runconst: unstable · sourcepub fn classify(self) -> FpCategory
pub fn classify(self) -> FpCategory
返回数字的浮点类别。 如果仅要测试一个属性,则通常使用特定谓词会更快。
use std::num::FpCategory;
let num = 12.4_f64;
let inf = f64::INFINITY;
assert_eq!(num.classify(), FpCategory::Normal);
assert_eq!(inf.classify(), FpCategory::Infinite);
Runconst: unstable · sourcepub fn is_sign_positive(self) -> bool
pub fn is_sign_positive(self) -> bool
如果 self
有正号,则返回 true
,包括 +0.0
、带正号位的 NaN 和正无穷大。
请注意,在 NaN 的情况下,IEEE 754 不会为符号位分配任何含义,并且由于 Rust 不保证 NaN 的位模式在算术运算中保持不变,因此 is_sign_positive
对 NaN 的结果可能会产生意外在某些情况下导致。
有关详细信息,请参见 将 NaN 解释为特殊值。
let f = 7.0_f64;
let g = -7.0_f64;
assert!(f.is_sign_positive());
assert!(!g.is_sign_positive());
Runconst: unstable · sourcepub fn is_sign_negative(self) -> bool
pub fn is_sign_negative(self) -> bool
如果 self
具有 negative 符号,则返回 true
,包括 -0.0
、具有 negative 符号位的 NaN 和 negative 无穷大。
请注意,在 NaN 的情况下,IEEE 754 不会为符号位分配任何含义,并且由于 Rust 不保证 NaN 的位模式在算术运算中保持不变,因此 is_sign_negative
对 NaN 的结果可能会产生意外在某些情况下导致。
有关详细信息,请参见 将 NaN 解释为特殊值。
let f = 7.0_f64;
let g = -7.0_f64;
assert!(!f.is_sign_negative());
assert!(g.is_sign_negative());
Runconst: unstable · sourcepub fn next_up(self) -> f64
🔬This is a nightly-only experimental API. (float_next_up_down
#91399)
pub fn next_up(self) -> f64
float_next_up_down
#91399)返回大于 self
的最小数字。
令 TINY
为可表示的最小正 f64
。
Then,
- 如果是
self.is_nan()
,则返回self
; - 如果
self
是NEG_INFINITY
,则返回MIN
; - 如果
self
是-TINY
,则返回 - 0.0; - 如果
self
为 - 0.0 或 + 0.0,则返回TINY
; - 如果
self
是MAX
或INFINITY
,则返回INFINITY
; - 否则返回大于
self
的唯一最小值。
恒等式 x.next_up() == -(-x).next_down()
适用于所有非 NaN x
。当 x
为有限时,x == x.next_up().next_down()
也成立。
#![feature(float_next_up_down)]
// f64::EPSILON 是 1.0 和下一个数字之间的差。
assert_eq!(1.0f64.next_up(), 1.0 + f64::EPSILON);
// 但不适用于大多数数字。
assert!(0.1f64.next_up() < 0.1 + f64::EPSILON);
assert_eq!(9007199254740992f64.next_up(), 9007199254740994.0);
Runconst: unstable · sourcepub fn next_down(self) -> f64
🔬This is a nightly-only experimental API. (float_next_up_down
#91399)
pub fn next_down(self) -> f64
float_next_up_down
#91399)返回小于 self
的最大数。
令 TINY
为可表示的最小正 f64
。
Then,
- 如果是
self.is_nan()
,则返回self
; - 如果
self
是INFINITY
,则返回MAX
; - 如果
self
是TINY
,则返回 0.0; - 如果
self
为 - 0.0 或 + 0.0,则返回-TINY
; - 如果
self
是MIN
或NEG_INFINITY
,则返回NEG_INFINITY
; - 否则返回小于
self
的唯一最大值。
恒等式 x.next_down() == -(-x).next_up()
适用于所有非 NaN x
。当 x
为有限时,x == x.next_down().next_up()
也成立。
#![feature(float_next_up_down)]
let x = 1.0f64;
// 将值限制在 [0, 1) 范围内。
let clamped = x.clamp(0.0, 1.0f64.next_down());
assert!(clamped < 1.0);
assert_eq!(clamped.next_up(), 1.0);
Runsourcepub fn recip(self) -> f64
pub fn recip(self) -> f64
取一个数 1/x
的倒数 (inverse)。
let x = 2.0_f64;
let abs_difference = (x.recip() - (1.0 / x)).abs();
assert!(abs_difference < 1e-10);
Runsourcepub fn to_degrees(self) -> f64
pub fn to_degrees(self) -> f64
将弧度转换为度数。
let angle = std::f64::consts::PI;
let abs_difference = (angle.to_degrees() - 180.0).abs();
assert!(abs_difference < 1e-10);
Runsourcepub fn to_radians(self) -> f64
pub fn to_radians(self) -> f64
将度数转换为弧度。
let angle = 180.0_f64;
let abs_difference = (angle.to_radians() - std::f64::consts::PI).abs();
assert!(abs_difference < 1e-10);
Runsourcepub fn max(self, other: f64) -> f64
pub fn max(self, other: f64) -> f64
返回两个数字中的最大值,忽略 NaN。
如果参数之一是 NaN,则返回另一个参数。 这遵循 maxNum 的 IEEE 754-2008 语义,除了处理信令 NaN; 这个函数以相同的方式处理所有的 NaN,并避免了 maxNum 的关联性问题。 这也符合 libm 的 fmax 的行为。
let x = 1.0_f64;
let y = 2.0_f64;
assert_eq!(x.max(y), y);
Runsourcepub fn min(self, other: f64) -> f64
pub fn min(self, other: f64) -> f64
返回两个数字中的最小值,忽略 NaN。
如果参数之一是 NaN,则返回另一个参数。 这遵循 minNum 的 IEEE 754-2008 语义,除了处理信令 NaN; 这个函数以相同的方式处理所有的 NaN,并避免了 minNum 的关联性问题。 这也符合 libm 的 fmin 的行为。
let x = 1.0_f64;
let y = 2.0_f64;
assert_eq!(x.min(y), x);
Runsourcepub fn maximum(self, other: f64) -> f64
🔬This is a nightly-only experimental API. (float_minimum_maximum
#91079)
pub fn maximum(self, other: f64) -> f64
float_minimum_maximum
#91079)返回两个数字中的最大值,传播 NaN。
当任一参数为 NaN 时,这将返回 NaN,而 f64::max
仅当两个参数都为 NaN 时才返回 NaN。
#![feature(float_minimum_maximum)]
let x = 1.0_f64;
let y = 2.0_f64;
assert_eq!(x.maximum(y), y);
assert!(x.maximum(f64::NAN).is_nan());
Run如果参数之一是 NaN,则返回 NaN。否则,这将返回两个数字中较大的一个。对于此操作,-0.0
被认为小于 +0.0
。
请注意,这遵循 IEEE 754-2019 中指定的语义。
另请注意,此处 NaN 的 “propagation” 并不一定意味着 NaN 操作数的位模式是守恒的; 有关详细信息,请参见 将 NaN 解释为特殊值。
sourcepub fn minimum(self, other: f64) -> f64
🔬This is a nightly-only experimental API. (float_minimum_maximum
#91079)
pub fn minimum(self, other: f64) -> f64
float_minimum_maximum
#91079)返回两个数字中的最小值,传播 NaN。
当任一参数为 NaN 时返回 NaN,而 f64::min
仅当两个参数都为 NaN 时才返回 NaN。
#![feature(float_minimum_maximum)]
let x = 1.0_f64;
let y = 2.0_f64;
assert_eq!(x.minimum(y), x);
assert!(x.minimum(f64::NAN).is_nan());
Run如果参数之一是 NaN,则返回 NaN。否则,这将返回两个数字中的较小者。对于此操作,-0.0
被认为小于 +0.0
。
请注意,这遵循 IEEE 754-2019 中指定的语义。
另请注意,此处 NaN 的 “propagation” 并不一定意味着 NaN 操作数的位模式是守恒的; 有关详细信息,请参见 将 NaN 解释为特殊值。
sourcepub fn midpoint(self, other: f64) -> f64
🔬This is a nightly-only experimental API. (num_midpoint
#110840)
pub fn midpoint(self, other: f64) -> f64
num_midpoint
#110840)1.44.0 · sourcepub unsafe fn to_int_unchecked<Int>(self) -> Intwhere
f64: FloatToInt<Int>,
pub unsafe fn to_int_unchecked<Int>(self) -> Intwhere f64: FloatToInt<Int>,
舍入为零并转换为任何原始整数类型,前提是该值是有限的并且适合该类型。
let value = 4.6_f64;
let rounded = unsafe { value.to_int_unchecked::<u16>() };
assert_eq!(rounded, 4);
let value = -128.9_f64;
let rounded = unsafe { value.to_int_unchecked::<i8>() };
assert_eq!(rounded, i8::MIN);
RunSafety
该值必须:
- 不是
NaN
- 不是无限的
- 截断小数部分后,可以在返回类型
Int
中表示
1.20.0 (const: unstable) · sourcepub fn from_bits(v: u64) -> f64
pub fn from_bits(v: u64) -> f64
来自 u64
的原始 mut 变。
当前,这与所有平台上的 transmute::<u64, f64>(v)
相同。
事实证明,此方法具有很高的可移植性,其原因有两个:
- 浮点数和整数在所有受支持的平台上具有相同的字节序。
- IEEE 754 非常精确地指定了浮点数的位布局。
但是有一个警告: 在 2008 年版本的 IEEE 754 之前,实际上并未指定如何解释 NaN 信号位。 大多数平台 (特别是 x86 和 ARM) 采用了最终在 2008 年标准化的解释,但有些则没有 (特别是 MIPS)。 结果,MIPS 上的所有信令 NaN 都是 x86 上的安静 NaN,反之亦然。
该实现方式不是尝试保留跨信令的信令,而是倾向于保留确切的位。 这意味着,即使此方法的结果通过网络从 x86 机器发送到 MIPS 机器,任何以 NaN 编码的有效载荷也将被保留。
如果这个方法的结果只由产生它们的同一个架构操纵,那么就没有可移植性的问题。
如果输入的不是 NaN,则不存在可移植性问题。
如果您不太在意信号传递性,那么就不必担心可移植性。
请注意,此函数与 as
强制转换不同,后者试图保留 数字 值,而不是按位值。
Examples
let v = f64::from_bits(0x4029000000000000);
assert_eq!(v, 12.5);
Run1.40.0 (const: unstable) · sourcepub fn to_be_bytes(self) -> [u8; 8]
pub fn to_be_bytes(self) -> [u8; 8]
1.40.0 (const: unstable) · sourcepub fn to_le_bytes(self) -> [u8; 8]
pub fn to_le_bytes(self) -> [u8; 8]
1.40.0 (const: unstable) · sourcepub fn to_ne_bytes(self) -> [u8; 8]
pub fn to_ne_bytes(self) -> [u8; 8]
返回此浮点数的内存表示形式,以原生字节顺序的字节数组形式。
由于使用了目标平台的原生字节序,因此,可移植代码应酌情使用 to_be_bytes
或 to_le_bytes
。
有关此操作的可移植性的一些讨论,请参见 from_bits
(几乎没有问题)。
Examples
let bytes = 12.5f64.to_ne_bytes();
assert_eq!(
bytes,
if cfg!(target_endian = "big") {
[0x40, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
} else {
[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x40]
}
);
Run1.40.0 (const: unstable) · sourcepub fn from_ne_bytes(bytes: [u8; 8]) -> f64
pub fn from_ne_bytes(bytes: [u8; 8]) -> f64
从其表示形式 (以原生字节序形式的字节数组形式) 创建浮点值。
由于使用了目标平台的原生字节序,因此可移植代码可能希望酌情使用 from_be_bytes
或 from_le_bytes
。
有关此操作的可移植性的一些讨论,请参见 from_bits
(几乎没有问题)。
Examples
let value = f64::from_ne_bytes(if cfg!(target_endian = "big") {
[0x40, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
} else {
[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x40]
});
assert_eq!(value, 12.5);
Run1.62.0 · sourcepub fn total_cmp(&self, other: &f64) -> Ordering
pub fn total_cmp(&self, other: &f64) -> Ordering
返回 self
和 other
之间的顺序。
与浮点数之间的标准部分比较不同,此比较始终根据 IEEE 754 (2008 修订版) 浮点标准中定义的 totalOrder
谓词生成排序。
这些值按以下顺序排序:
- negative quiet NaN
- negative signaling NaN
- negative infinity
- negative numbers
- negative subnormal numbers
- negative zero
- positive zero
- positive subnormal numbers
- positive numbers
- positive infinity
- positive signaling NaN
- positive quiet NaN.
这个函数建立的顺序并不总是与 f64
的 PartialOrd
和 PartialEq
实现一致。
例如,他们认为负零和正零相等,而 total_cmp
doesn’t.
信令 NaN 位的解释遵循 IEEE 754 标准中的定义,这可能与一些旧的、不符合标准的 (例如 MIPS) 硬件实现的解释不匹配。
Example
struct GoodBoy {
name: String,
weight: f64,
}
let mut bois = vec![
GoodBoy { name: "Pucci".to_owned(), weight: 0.1 },
GoodBoy { name: "Woofer".to_owned(), weight: 99.0 },
GoodBoy { name: "Yapper".to_owned(), weight: 10.0 },
GoodBoy { name: "Chonk".to_owned(), weight: f64::INFINITY },
GoodBoy { name: "Abs. Unit".to_owned(), weight: f64::NAN },
GoodBoy { name: "Floaty".to_owned(), weight: -5.0 },
];
bois.sort_by(|a, b| a.weight.total_cmp(&b.weight));
Run1.50.0 · sourcepub fn clamp(self, min: f64, max: f64) -> f64
pub fn clamp(self, min: f64, max: f64) -> f64
除非是 NaN,否则将值限制为一定的时间间隔。
如果 self
大于 max
,则返回 max
; 如果 self
小于 min
,则返回 min
。
否则,将返回 self
。
请注意,如果初始值也为 NaN,则此函数将返回 NaN。
Panics
如果 min > max
,min
为 NaN 或 max
为 NaN,就会出现 panics。
Examples
assert!((-3.0f64).clamp(-2.0, 1.0) == -2.0);
assert!((0.0f64).clamp(-2.0, 1.0) == 0.0);
assert!((2.0f64).clamp(-2.0, 1.0) == 1.0);
assert!((f64::NAN).clamp(-2.0, 1.0).is_nan());
RunTrait Implementations§
1.22.0 · source§impl AddAssign<&f64> for f64
impl AddAssign<&f64> for f64
source§fn add_assign(&mut self, other: &f64)
fn add_assign(&mut self, other: &f64)
+=
操作。 Read more1.8.0 · source§impl AddAssign<f64> for f64
impl AddAssign<f64> for f64
source§fn add_assign(&mut self, other: f64)
fn add_assign(&mut self, other: f64)
+=
操作。 Read more1.22.0 · source§impl DivAssign<&f64> for f64
impl DivAssign<&f64> for f64
source§fn div_assign(&mut self, other: &f64)
fn div_assign(&mut self, other: &f64)
/=
操作。 Read more1.8.0 · source§impl DivAssign<f64> for f64
impl DivAssign<f64> for f64
source§fn div_assign(&mut self, other: f64)
fn div_assign(&mut self, other: f64)
/=
操作。 Read moresource§impl FromStr for f64
impl FromStr for f64
source§fn from_str(src: &str) -> Result<f64, ParseFloatError>
fn from_str(src: &str) -> Result<f64, ParseFloatError>
将以 10 为底的字符串转换为浮点数。 接受可选的十进制指数。
该函数接受诸如以下的字符串
- ‘3.14’
- ‘-3.14’
- ‘2.5E10’,或等效的 ‘2.5e10’
- ‘2.5E-10’
- ‘5.’
- ‘.5’,或等效地,‘0.5’
- ‘inf’, ‘-inf’, ‘+infinity’, ‘NaN’
请注意,字母字符不区分大小写。
前导和尾随空格表示错误。
Grammar
Float ::= Sign? ( 'inf' | 'infinity' | 'nan' | Number )
Number ::= ( Digit+ |
Digit+ '.' Digit* |
Digit* '.' Digit+ ) Exp?
Exp ::= 'e' Sign? Digit+
Sign ::= [+-]
Digit ::= [0-9]
Arguments
- src - 字符串
返回值
Err(ParseFloatError)
如果字符串不代表有效数字。
否则,Ok(n)
,其中 n
是与 src
表示的数字最接近的可表示浮点数 (遵循与原始运算结果相同的舍入规则)。
§type Err = ParseFloatError
type Err = ParseFloatError
1.22.0 · source§impl MulAssign<&f64> for f64
impl MulAssign<&f64> for f64
source§fn mul_assign(&mut self, other: &f64)
fn mul_assign(&mut self, other: &f64)
*=
操作。 Read more1.8.0 · source§impl MulAssign<f64> for f64
impl MulAssign<f64> for f64
source§fn mul_assign(&mut self, other: f64)
fn mul_assign(&mut self, other: f64)
*=
操作。 Read moresource§impl Rem<f64> for f64
impl Rem<f64> for f64
1.22.0 · source§impl RemAssign<&f64> for f64
impl RemAssign<&f64> for f64
source§fn rem_assign(&mut self, other: &f64)
fn rem_assign(&mut self, other: &f64)
%=
操作。 Read more1.8.0 · source§impl RemAssign<f64> for f64
impl RemAssign<f64> for f64
source§fn rem_assign(&mut self, other: f64)
fn rem_assign(&mut self, other: f64)
%=
操作。 Read moresource§impl SimdElement for f64
impl SimdElement for f64
1.22.0 · source§impl SubAssign<&f64> for f64
impl SubAssign<&f64> for f64
source§fn sub_assign(&mut self, other: &f64)
fn sub_assign(&mut self, other: &f64)
-=
操作。 Read more1.8.0 · source§impl SubAssign<f64> for f64
impl SubAssign<f64> for f64
source§fn sub_assign(&mut self, other: f64)
fn sub_assign(&mut self, other: f64)
-=
操作。 Read more