gpt4 book ai didi

rust - 获取int的长度

转载 作者:行者123 更新时间:2023-12-01 23:14:06 24 4
gpt4 key购买 nike

我正在尝试获取 rust 中 int 的长度(以十进制解释时的位数)。我找到了一种方法,但是我正在寻找来自原语本身的方法。这是我的:

let num = 90.to_string();
println!("num: {}", num.chars().count())
// num: 2

我正在查看 https://docs.rs/digits/0.3.3/digits/struct.Digits.html#method.length .这是一个好的候选人吗?我该如何使用它?还是有其他箱子可以帮我做这件事?

类型转换较少的衬垫是我正在寻找的理想解决方案。

最佳答案

您可以循环并检查在数字变为一位数之前您可以将数字除以 10 的频率。或者在另一个方向(因为除法比乘法慢),检查你可以乘以 10*10*...*10 的频率,直到你达到这个数字:

fn length(n: u32, base: u32) -> u32 {
let mut power = base;
let mut count = 1;
while n >= power {
count += 1;
if let Some(new_power) = power.checked_mul(base) {
power = new_power;
} else {
break;
}
}
count
}

随着 nightly rust(或者在未来,当 int_log 功能稳定时),你可以使用:

#![feature(int_log)]

n.checked_log10().unwrap_or(0) + 1

关于rust - 获取int的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69297477/

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