wang8091 发表于 2022-3-16 15:02:36

如何判断小数点无条件进位

比如现在有一个0.1257或是0.6254让其在小数点第三进位,变成0.126和0.626,搞了半天不知道什么思路判断无条件进位,求求大神们给个思路,谢谢

guosheyang 发表于 2022-3-17 09:32:28

夏生生 发表于 2022-3-16 16:27
不好意思,看错了
(defun tt (real n / a)(setq a (* real (expt 10. n)))(if (= a (setq a (fix a)))(ato ...

朋友小数点位数多了 好像就不对了

guosheyang 发表于 2022-3-17 09:37:49

我这个代码最高可以到小数位16位   17位以后不对头,针对大数据的就不对头了 哪位朋友帮改下
;(setq n 0.13578282352462346721)
;测试(jw n 16)      
;变量n实数 w小数位数
(defun jw(n w / j)
(setq j(expt 10. w))
(rtos(/(fix(1+(* n j)))(float j))2 w)
)

夏生生 发表于 2022-3-17 11:19:56

guosheyang 发表于 2022-3-17 09:32
朋友小数点位数多了 好像就不对了

针对一般情况,特殊情况用string

tryhi 发表于 2022-3-17 10:46:59

guosheyang 发表于 2022-3-17 09:37
我这个代码最高可以到小数位16位   17位以后不对头,针对大数据的就不对头了 哪位朋友帮改下
;(setq n 0.1 ...
百度一下什么双精度浮点数之后再来提问,想要超过双精度,可以自己定义数值类型结构及算法,方法类似于我发的
纯lsp实现lsp的超大整数四则运算

xyp1964 发表于 2022-3-17 13:08:29

(defun abc (num n / a)
(setq a (* (eval (read (strcat "1e-" (itoa (1+ n))))) 5))
(rtos (+ num a) 2 n)
)

夏生生 发表于 2022-3-16 16:15:30

(defun xty-tr-rounded (real n)
(if (= n 0)
    (atoi (rtos real 2 0))
    (atof (rtos real 2 n))
)
)

夏生生 发表于 2022-3-16 16:27:01

不好意思,看错了
(defun tt (real n / a)(setq a (* real (expt 10. n)))(if (= a (setq a (fix a)))(atof (rtos real 2 n))(atof (rtos (* (1+ a) (expt 10. (- n))) 2 n))))

xyp1964 发表于 2022-3-16 16:40:00

(defun abc (n)(rtos(+ n 0.0005)2 3))

guosheyang 发表于 2022-3-17 11:49:04

tryhi 发表于 2022-3-17 10:46
百度一下什么双精度浮点数之后再来提问,想要超过双精度,可以自己定义数值类型结构及算法,方法类似于我 ...

知道是超范围了,搜索大数据 竟然没搜到大神你的代码:lol
页: [1] 2
查看完整版本: 如何判断小数点无条件进位