String 如何在Racket中将数字(十进制数)转换为字符串?

String 如何在Racket中将数字(十进制数)转换为字符串?,string,numbers,racket,String,Numbers,Racket,在Dr.Racket中,如何将数字(如0.8)转换为字符串。每当我这样做的时候,我都会得到字符串中的分数形式的数字。我要十进制的。我还希望它将数字保留到第一百位,并希望数字后面显示“euro”。 目前,这是我的代码: (define (special-number pizza) (number->string pizza)) 如果我输入: (special-number 0.8) 我得到的输出是“4/5”。我期望的产量是“0.80欧元”。我该怎么做?。任何提示或策略都会有所帮

在Dr.Racket中,如何将数字(如0.8)转换为字符串。每当我这样做的时候,我都会得到字符串中的分数形式的数字。我要十进制的。我还希望它将数字保留到第一百位,并希望数字后面显示“euro”。 目前,这是我的代码:

(define (special-number pizza)
  (number->string pizza))
如果我输入:

   (special-number 0.8)
我得到的输出是“4/5”。我期望的产量是“0.80欧元”。我该怎么做?。任何提示或策略都会有所帮助。谢谢。

如果您使用的是
#lang racket
,那么您可以使用。如果您使用的是
#lang racket/base
或功能较少的语言包,您可能需要先
(require racket/format)
<代码>~r将有理数转换为字符串,并允许您控制格式:

(define (monetize n currency)
  (string-append (~r n #:precision '(= 2)) " " currency))
以下是REPL中的一些示例交互:

format.rkt>(货币化0.8欧元)
“0.80欧元”
格式.rkt>(货币化1.29欧元)
“1.29欧元”
格式.rkt>(货币化1.234欧元)
“1.23欧元”
格式.rkt>(货币化1.345欧元)
“1.35欧元”
格式.rkt>(货币化1欧元)
“1.00欧元”
如果您使用的是
#lang racket
,则可以使用。如果您使用的是
#lang racket/base
或功能较少的语言包,您可能需要先
(require racket/format)
<代码>~r将有理数转换为字符串,并允许您控制格式:

(define (monetize n currency)
  (string-append (~r n #:precision '(= 2)) " " currency))
以下是REPL中的一些示例交互:

format.rkt>(货币化0.8欧元)
“0.80欧元”
格式.rkt>(货币化1.29欧元)
“1.29欧元”
格式.rkt>(货币化1.234欧元)
“1.23欧元”
格式.rkt>(货币化1.345欧元)
“1.35欧元”
格式.rkt>(货币化1欧元)
“1.00欧元”

目前这可能对您没有帮助,但仅供参考,我已为您要求的功能提交了功能请求,并已实现:。(目前也有问题,但我也报告了问题)


要使用此功能,您可以下载Racket()的快照版本,或者等待即将发布的7.9版本(计划在下个月发布)。这两种方法对您可能都不可行。

这可能对您目前没有帮助,但仅供参考,我已为您要求的功能提交了功能请求,并已实施:。(目前也有问题,但我也报告了问题)


要使用此功能,您可以下载Racket()的快照版本,或者等待即将发布的7.9版本(计划在下个月发布)。这两种方法对您可能都不可行。

OP使用学生语言。他们的老师很可能不允许学生需要额外的库。另外请注意,默认情况下,
(数字->字符串0.8)
确实会导致
“0.8”
已经处于常规状态,因为小数是不精确的。除非你设置,学生语言就是这样做的。@SoraweePorncharoenwase——我看不出OP提到了学生语言,也没有涉及到讲师
(数字->字符串0.8)
不会像OP所希望的那样返回
“0.80”
。好吧,请看上面的评论,了解我是如何判断这是一种学生语言而不是
#lang racket
。啊,好吧,我忽略了“0.8”和“0.80”之间的区别。无论如何,OP使用学生语言的事实仍然存在,如果有一个只使用语言中的内容的解决方案就好了。OP使用学生语言。他们的老师很可能不允许学生需要额外的库。另外请注意,默认情况下,
(数字->字符串0.8)
确实会导致
“0.8”
已经处于常规状态,因为小数是不精确的。除非你设置,学生语言就是这样做的。@SoraweePorncharoenwase——我看不出OP提到了学生语言,也没有涉及到讲师
(数字->字符串0.8)
不会像OP所希望的那样返回
“0.80”
。好吧,请看上面的评论,了解我是如何判断这是一种学生语言而不是
#lang racket
。啊,好吧,我忽略了“0.8”和“0.80”之间的区别。无论如何,OP使用学生语言的事实仍然存在,如果有一个只使用该语言中的内容的解决方案就好了。基于,看起来这并没有达到OP想要的效果。例如,文档中的
>(数字->字符串数字0.92)
-->“0.9”,其中OP想要
“0.90”
。基于,看起来这并不是OP想要的。例如,
>(数字->字符串数字0.92)
-->“0.9”来自文档,OP希望
“0.90”