控制浮点数的小数位数

问题描述 投票:0回答:1

有没有办法在lisp中控制浮点数的小数位数: 我希望我的输出是 89.83 而不是 89.833336 在 HyperSpec 中高低搜索合适的函数 - 找不到。

(defun average(&rest nums)
   (float (/ (apply #'+ nums) (length nums))))

(average 99 97 78 88 99 78) --> 89.833336
common-lisp
1个回答
0
投票

您可以将浮点数乘以 100,四舍五入,然后除以 100,四舍五入到小数点后两位。

(defun round_to_two (num)
  (/ (float (round (* num 100))) 100))

如果您只想删除多余的数字,请使用

floor
而不是
round

© www.soinside.com 2019 - 2024. All rights reserved.