diff options
author | Paul Phillips <paulp@improving.org> | 2010-03-23 18:51:08 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2010-03-23 18:51:08 +0000 |
commit | 10be8dc7854ad1c7a21d86e0e3675d5231384aa5 (patch) | |
tree | 0f1295a51afdf2373f4f89231ba013d81ab70fc1 /src/library/scala/math/BigDecimal.scala | |
parent | c452268c133dde1d7555473f992545b08d69194f (diff) | |
download | scala-10be8dc7854ad1c7a21d86e0e3675d5231384aa5.tar.gz scala-10be8dc7854ad1c7a21d86e0e3675d5231384aa5.tar.bz2 scala-10be8dc7854ad1c7a21d86e0e3675d5231384aa5.zip |
Fix and test case for #3169.
Diffstat (limited to 'src/library/scala/math/BigDecimal.scala')
-rw-r--r-- | src/library/scala/math/BigDecimal.scala | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/library/scala/math/BigDecimal.scala b/src/library/scala/math/BigDecimal.scala index 6bd6b33484..bb6965fcdc 100644 --- a/src/library/scala/math/BigDecimal.scala +++ b/src/library/scala/math/BigDecimal.scala @@ -29,6 +29,8 @@ object BigDecimal private val minCached = -512 private val maxCached = 512 + + /** Cache ony for defaultMathContext using BigDecimals in a small range. */ private lazy val cache = new Array[BigDecimal](maxCached - minCached + 1) val defaultMathContext = MathContext.UNLIMITED @@ -50,12 +52,13 @@ object BigDecimal */ def apply(i: Int): BigDecimal = apply(i, defaultMathContext) def apply(i: Int, mc: MathContext): BigDecimal = - if (minCached <= i && i <= maxCached) { + if (mc == defaultMathContext && minCached <= i && i <= maxCached) { val offset = i - minCached var n = cache(offset) if (n eq null) { n = new BigDecimal(BigDec.valueOf(i), mc); cache(offset) = n } n - } else new BigDecimal(BigDec.valueOf(i), mc) + } + else new BigDecimal(BigDec.valueOf(i), mc) /** Constructs a <code>BigDecimal</code> whose value is equal to that of the * specified long value. |