首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可读的数字

可读的数字
EN

Stack Overflow用户
提问于 2016-01-10 23:05:45
回答 3查看 1.6K关注 0票数 6

是否有一种简单的和动态的方法来格式化字符串中的数字,使之成为人类可读的?例如,将10000000000转换为10,000,000,000。我已经看到了this的问题,但答案已经过时和破碎了(举个例子)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-11 04:28:56

对我的现场来说,这似乎是可行的!可能不是最惯用的生锈,但它是功能性的。

代码语言:javascript
复制
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);
}
票数 2
EN

Stack Overflow用户

发布于 2016-01-11 03:59:55

试试这个psuedo算法:

  1. 将字符串长度除以3
  2. 把它取下来,我们就叫它x
  3. 循环字符串x时间,然后返回:
代码语言:javascript
复制
1. Get the string at `x` times 3 position, or index [(x times 3) - 1], we'll call it `y`.
2. Replace `y` with `"," + y`

票数 4
EN

Stack Overflow用户

发布于 2016-01-11 04:33:39

在我的生活中我从来没有使用过锈菌,但这是我从here翻译出的解决方案。

代码语言:javascript
复制
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);
}

返回"-117,608,854“

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34711832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档