首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个简单的函数,用于在球拍中将字符串中的数字逗号

问一个简单的函数,用于在球拍中将字符串中的数字逗号
EN

Stack Overflow用户
提问于 2016-08-20 12:27:02
回答 1查看 88关注 0票数 0

在字符串中给数字加逗号,能不能有一个简单的函数用于常见情况?我找到了一种方法,虽然很全面,但看起来非常复杂:https://rosettacode.org/wiki/Commatizing_numbers#Racket

我只想有一个函数,它的工作方式如下:

代码语言:javascript
复制
(addcommas 1234567890)
"1,234,567,890"

(令人有点惊讶的是,拥有许多高级函数的球拍没有针对这种常见需求的内置函数)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-20 13:55:23

你可以尝试这样做:

代码语言:javascript
复制
(define (addcommas n)
  (define (split n acc)
    (if (< (abs n) 1000)
        (cons n acc)
        (let-values ([(quot rem) (quotient/remainder n 1000)])
          (split quot (cons (abs rem) acc)))))
  (apply ~a (split n '()) #:separator ","))

(addcommas -2332342390)

;; -> "-2,332,342,390"

如果要格式化实数,因为它们具有二进制表示形式,并且转换可能不精确,则必须添加一个精度参数,该参数指定点后的位数:

代码语言:javascript
复制
(define (addcommas-real n precision)
  (let* ((int-part (exact-truncate n))
         (float-part (exact-truncate (* (-  n int-part) (expt 10 precision)))))
    (~a (addcommas int-part) "." (abs float-part))))

(addcommas-real -2332342390.34 2)

;; -> "-2,332,342,390.34"

(addcommas-real -2332342390.34 5)

;; -> "-2,332,342,390.34000"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39050473

复制
相关文章

相似问题

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