需要解释 Lisp 中的反向科学记数法函数
Need explanation on reverse scientific notation function in Lisp
这是我知道的函数,从 1) 你的系数和 2) 你的指数,然后从科学记数法中提取数字。
示例:
coefficient 7,
exponent 3
7 * 10^3 = 7000
(define (scientific coeffiecent exponent) (* coefficient (expt 10 exponent)))
这是我正在努力解决的问题:反过来的函数,从 7000 到用于将其转化为科学记数法的系数和指数。我通过网络获得了一个工作功能,但真的很难完全理解它。
(define (sci-exponent number)
(floor (/ (log number) (log 10))))
(define (sci-coefficient number)
(/ number (expt 10 (sci-exponent number))))
如果有人能帮助我理解,将不胜感激!感谢您以任何方式阅读!
看sci-exponent
的正文,它占log(number)/log(10)的地板。你可能还记得数学 class:loga(n1)/loga(n2) = log n2(n1)。所以你得到的是 log10(number),它的底数是 number
减 1 的位数,这将是科学计数法。
然后可以很容易地从指数中导出系数。因为,正如您所写,coeff * exp = number
,然后是 number / exp = coeff
,这正是 sci-coefficient
正在实施的。
这是我知道的函数,从 1) 你的系数和 2) 你的指数,然后从科学记数法中提取数字。
示例:
coefficient 7,
exponent 3
7 * 10^3 = 7000
(define (scientific coeffiecent exponent) (* coefficient (expt 10 exponent)))
这是我正在努力解决的问题:反过来的函数,从 7000 到用于将其转化为科学记数法的系数和指数。我通过网络获得了一个工作功能,但真的很难完全理解它。
(define (sci-exponent number)
(floor (/ (log number) (log 10))))
(define (sci-coefficient number)
(/ number (expt 10 (sci-exponent number))))
如果有人能帮助我理解,将不胜感激!感谢您以任何方式阅读!
看sci-exponent
的正文,它占log(number)/log(10)的地板。你可能还记得数学 class:loga(n1)/loga(n2) = log n2(n1)。所以你得到的是 log10(number),它的底数是 number
减 1 的位数,这将是科学计数法。
然后可以很容易地从指数中导出系数。因为,正如您所写,coeff * exp = number
,然后是 number / exp = coeff
,这正是 sci-coefficient
正在实施的。