首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >晋升到BigDecimal是不可能的

晋升到BigDecimal是不可能的
EN

Stack Overflow用户
提问于 2013-08-21 08:30:11
回答 1查看 176关注 0票数 2

我正在使用Clojure 1.5.1。这是我的节目:

代码语言:javascript
复制
(def bricks4
  (memoize (fn [n]
             (cond (> 0 n) 0
                   (= 0 n) 1
                   (= 1 n) 1
                   :else (+ (bricks4 (- n 1))
                            (bricks4 (- n 2))
                            (bricks4 (- n 3))
                            (bricks4 (- n 4)))))))

(bricks4 70)抛出异常:

代码语言:javascript
复制
ArithmeticException integer overflow  clojure.lang.Numbers.throwIntOverflow (Numbers.java:1388) 

我很困惑,因为我认为Clojure会自动将数字从Integer提升到Long,然后再提升到BigDemical。

我该怎么做才能修复这个程序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-21 08:35:38

自从1.2,也就是几年前的like...three之后,Clojure就没有自动升级到bigint了?现在,默认情况是为了获得更好的性能,但是您可以通过使用+'而不是+*'而不是*等来获得自动提升的行为。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18352488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档