人类可读的数字
Human readable numbers
是否有一种简单的动态方式来将字符串中的数字格式化为人类可读的格式?例如将 10000000000
变成 10,000,000,000
。我看过 this 个问题,但答案已过时且损坏(带有示例的那个)。
试试这个伪算法:
- 将字符串长度除以 3
- 四舍五入,我们称之为
x
循环字符串 x
次,向后:
- 获取
x
乘以3 位置的字符串,或索引[(x 乘以3) - 1],我们称它为y
.
- 将
y
替换为"," + y
对于我的语言环境,这似乎有效!可能不是最惯用的 rust,但它很实用。
fn readable(mut o_s: String) -> String {
let mut s = String::new();
let mut negative = false;
let values: Vec<char> = o_s.chars().collect();
if values[0] == '-' {
o_s.remove(0);
negative = true;
}
for (i ,char) in o_s.chars().rev().enumerate() {
if i % 3 == 0 && i != 0 {
s.insert(0, ',');
}
s.insert(0, char);
}
if negative {
s.insert(0, '-');
}
return s
}
fn main() {
let value: i64 = -100000000000;
let new_value = readable(value.to_string());
println!("{}", new_value);
}
我一生中从未使用过 Rust,但这是我通过翻译 here:
的解决方案得出的
fn main() {
let i = -117608854;
printcomma(i);
}
fn printcomma(mut i: i32) {
if i < 0 {
print!("-");
i=-i;
}
if i < 1000 {
print!("{}", i.to_string());
return;
}
printcomma(i/1000);
print!(",{:03}", i%1000);
}
returns“-117,608,854”
是否有一种简单的动态方式来将字符串中的数字格式化为人类可读的格式?例如将 10000000000
变成 10,000,000,000
。我看过 this 个问题,但答案已过时且损坏(带有示例的那个)。
试试这个伪算法:
- 将字符串长度除以 3
- 四舍五入,我们称之为
x
循环字符串
x
次,向后:- 获取
x
乘以3 位置的字符串,或索引[(x 乘以3) - 1],我们称它为y
. - 将
y
替换为"," + y
- 获取
对于我的语言环境,这似乎有效!可能不是最惯用的 rust,但它很实用。
fn readable(mut o_s: String) -> String {
let mut s = String::new();
let mut negative = false;
let values: Vec<char> = o_s.chars().collect();
if values[0] == '-' {
o_s.remove(0);
negative = true;
}
for (i ,char) in o_s.chars().rev().enumerate() {
if i % 3 == 0 && i != 0 {
s.insert(0, ',');
}
s.insert(0, char);
}
if negative {
s.insert(0, '-');
}
return s
}
fn main() {
let value: i64 = -100000000000;
let new_value = readable(value.to_string());
println!("{}", new_value);
}
我一生中从未使用过 Rust,但这是我通过翻译 here:
的解决方案得出的fn main() {
let i = -117608854;
printcomma(i);
}
fn printcomma(mut i: i32) {
if i < 0 {
print!("-");
i=-i;
}
if i < 1000 {
print!("{}", i.to_string());
return;
}
printcomma(i/1000);
print!(",{:03}", i%1000);
}
returns“-117,608,854”