`
nickevin
  • 浏览: 38418 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Dive Into BigDecimal (pending)

阅读更多

在Java中处理大数值的精度问题, 可以考虑使用 BigDecimal或BigInteger.

 

环境如下:

OS: Windows XP Service Pack 2

JDK: 1.5.0_10

 

 

BigDecimal bc = new BigDecimal("15323121312.052");
BigDecimal bc2 = new BigDecimal("13123234.12");

Assert.assertEquals("15336244546.172", bc.add(bc2).toString());
Assert.assertEquals("15309998077.932", bc.subtract(bc2).toString());
Assert.assertEquals("201088908427219973.61424", bc.multiply(bc2).toString());

// java.lang.ArithmeticException
Assert.assertEquals("1167.63300661529309057240", bc.divide(bc2).toString()); 

 

运算 结果的首选标度
max(addend.scale(), augend.scale())
max(minuend.scale(), subtrahend.scale())
multiplier.scale() + multiplicand.scale()
dividend.scale() - divisor.scale()

 

从某种意义上说, BigDecimal可以处理任意位数的数值, 查阅Source便可知:

 

BigDecimal实际上内部维护一个数组

 /**
     * The magnitude of this BigInteger, in <i>big-endian</i> order: the
     * zeroth element of this array is the most-significant int of the
     * magnitude.  The magnitude must be "minimal" in that the most-significant
     * int (<tt>mag[0]</tt>) must be non-zero.  This is necessary to
     * ensure that there is exactly one representation for each BigInteger
     * value.  Note that this implies that the BigInteger zero has a
     * zero-length mag array.
     */
    int[] mag;
 

 

// 避免小数无限循环, 指定精度位数和RoundingMode 
bc.divide(bc2, 3, RoundingMode.HALF_UP); 
分享到:
评论

相关推荐

    《Dive Into Python 3中文版》PDF

    《Dive Into Python 3中文版》是一本深入学习Python 3编程语言的教程,适合初学者和有一定编程基础的开发者。这本书详细介绍了Python 3的各种特性,包括语法、数据结构、函数、类、模块、异常处理、输入/输出、网络...

    Dive Into HTML5 中文版

    Dive Into HTML5 中文版 Dive Into HTML5 中文版 Dive Into HTML5 中文版

    dive into python3 (中文版)

    Python是一种广泛使用的高级编程语言,以其简洁明了的语法和强大的功能而闻名。《深入Python3(中文版)》是一本系统介绍Python 3的书籍,旨在帮助读者深入学习Python 3的基本知识与应用。本文将根据给定文件的信息...

    Dive into Python3

    《Dive into Python3》是一本专为Python 3编程语言设计的教程,旨在帮助初学者和有一定经验的程序员深入理解Python 3的核心概念和技术。这本书由Mark Pilgrim撰写,以其详细、实践性强的特点深受读者喜爱。尽管描述...

    Dive into Deep Learning

    deep learning has taken the world by surprise, driving rapid progress in fields as diverse as computer vision, natural language processing, automatic speech recognition, reinforcement ...

    Dive Into Python 中文译文版

    《Dive Into Python》是一本深受程序员喜爱的Python编程教程,中文译文版的发布为中文读者提供了便利,尤其对于初学者来说,是学习Python语言的一份宝贵资源。该资源包含两个部分:PDF版本的译文和帮助文档,以及...

    DiveIntoPython

    《Dive Into Python》是一本深受编程初学者和有经验开发者喜爱的Python编程教程。这本书以其深入浅出的讲解方式,让学习者能够快速掌握Python编程语言的核心概念和实际应用,特别是对于想要涉足Web开发领域的读者,...

    2015-Dive into Python-中文版

    《2015-Dive into Python》是一本深入学习Python编程语言的经典著作,中文版的出版使得更多中文读者能够方便地获取和理解Python的核心概念和技术。这本书是针对有一定编程基础,希望深入理解Python的读者而设计的,...

    Dive Into Python 3

    《深入Python 3》是一本全面且深入介绍Python 3编程语言的电子书籍,旨在帮助读者从...压缩包中的文件“diveintomark-diveintopython3-793871b”很可能是该书的源代码或HTML文件,可以配合阅读,加深对书中示例的理解。

    dive-into-python3 (英文版)+深入python3(中文版)

    《Dive Into Python3》和《深入Python3》是两本深受Python爱好者欢迎的书籍,分别提供了英文和中文的学习资源,旨在帮助读者全面理解和掌握Python3编程语言。这两本书覆盖了Python3的基础语法、高级特性以及实际应用...

    Dive into python

    dive into python英文原版,Dive Into Python 3 covers Python 3 and its differences from Python 2. Compared to Dive Into Python, it’s about 20% revised and 80% new material. The book is now complete, ...

    Deep Dive into Android IPC-Binder Framework

    Android是一个广泛使用的开源操作系统,用于智能手机和平板电脑等移动设备。它由Google领导开发,并且基于Linux内核。在Android系统中,各种应用程序和系统服务之间进行交互和通信的方式,称为进程间通信(IPC)。...

    dive into design patterns(Alexander Shvets).pdf

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...

    Dive Into Python 3 无水印pdf

    Dive Into Python 3 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Dive Into Python 3, r870 (2010).pdf

    Didyoureadtheoriginal“DiveIntoPython”?Didyoubuyit onpaper?(Ifso,thanks!)AreyoureadytotaketheplungeintoPython3?…Ifso,readon.(Ifnoneofthat istrue,you’dbebetteroffstartingatthebeginning.) Python3...

    Dive Into Python 2 中文版

    《Dive Into Python 2 中文版》是一本深度探讨Python编程语言的教程,适合已经有一定编程基础,希望深入理解Python特性和应用的读者。这本书以其详尽的解释和丰富的实例,为Python初学者和进阶者提供了全面的学习...

    深入Python (Dive Into Python)

    深入python,深入Python (Dive Into Python) 译者序 by limodou 主页(http://phprecord.126.com) Python论坛 本书英文名字为《Dive Into Python》,其发布遵守 GNU 的自由文档许可证(Free Document Lience)的...

Global site tag (gtag.js) - Google Analytics