如何更改在Racket中从csv编写输出的精度?

rsaldnfx  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(73)

我正在使用 csv-writing 包中的 display-table,并且希望在将数字转换为字符串以进行输出时更改默认精度。我可以看到文档说使用 make-csv-printing-params#:number-cell->string,但它也说它使用~r参数 #:precision。我试着把这一切结合在一起,但没有成功:

(display-table each_rank_table vars_out_port
           #:printing-params
           (make-csv-printing-params
           #:number-cell->string
           (~r #:precision 8)))

字符串
我假设我需要以某种方式将单元格值放入~r(?),所以我认为我没有以正确的方式去做这件事。

xdyibdwo

xdyibdwo1#

你必须给予它一个接受数值参数并返回一个字符串的函数-一个只调用~r的函数将是最简单的。
示例:

(make-csv-printing-params
  #:number-cell->string (curry ~r #:precision 8))

字符串

(make-csv-printing-params
  #:number-cell->string (lambda (n) (~r n #:precision 8)))


请注意,如果您希望输出中包含尾随的0,则需要使用'(= 8)作为精度:

> (~r 3.2 #:precision 8)
"3.2"
> (~r 3.2 #:precision '(= 8))
"3.20000000"

相关问题