gpt4 book ai didi

rust - 为什么 Rust 浮点值可以用很少的有效数字保存大值,而整数不能?

转载 作者:行者123 更新时间:2023-11-29 08:34:23 27 4
gpt4 key购买 nike

为什么只有 Rust 中的浮点值似乎能够保存具有很少有效数字的大值,而整数却不能?

println!("{}", std::f64::MAX); // 1.7976931348623157e199
println!("{}", std::i64::MAX); // 9223372036854775807

如果我有一个整数,即 99e100,Rust 中是否有任何原语可以将该值存储为整数,或者我是否被迫使用 float ?

最佳答案

Rust 原语是固定大小的。因此,它们可以存储的唯一值的数量是有限的,不大于 2^n,其中 n 是类型中的位数。在整数类型的情况下,这些位模式被分配给每个连续的整数,直到它们可以表示的值的数量,从 0 开始。此外,在有符号整数的情况下,这些模式的一半被分配给负数。

鉴于这些规范,i64 可以容纳的最大值是 2^63-1(这是您打印的数字)。最大的有符号整数类型 i128,最多可以容纳 2^127-1 的值。如果您使用 u128,您可以一直达到 2^128-1。这是 Rust 中原始整数类型可以容纳的最大值,远小于您对 99e100 的要求。

如果您想要更大的整数,则需要使用更大的固定大小类型或无限制类型,它会根据需要增长。这些都不是 Rust 标准的一部分。因此,您将不得不编写自己的实现,或者使用其他人的实现,例如 the num crate .

关于rust - 为什么 Rust 浮点值可以用很少的有效数字保存大值,而整数不能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55408070/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com