帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:Javascript库  arithmetic  dec  ARB  PRE  Javascript  任意精度   十进制  
A Javascript library for arbitrary-precision arithmetic.

  • 源代码名称:bignumber.js
  • 源代码网址:http://www.github.com/MikeMcl/bignumber.js
  • bignumber.js源代码文档
  • bignumber.js源代码下载
  • Git URL:
    git://www.github.com/MikeMcl/bignumber.js.git
  • Git Clone代码到本地:
    git clone http://www.github.com/MikeMcl/bignumber.js
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/MikeMcl/bignumber.js
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • bignumber.js

    任意精度十进制和非十进制算术的JavaScript库。


    特性

    • 比JavaScript的BigDecimal版本更快,更小,更易于使用
    • 8 KB缩小和压缩
    • 简单 API,但具有完整功能
    • 使用或者不包含从 2到 64的基数的数字或者不带分数位数的数字
    • 复制 toExponentialtoFixedtoPrecisiontoString 类型数的方法
    • 包含 toFraction 和正确舍入的squareRoot 方法
    • 支持加密安全伪随机数生成
    • 无相关性
    • 宽平台兼容性:仅使用( ECMAScript 3 ) 1.5特性
    • 全面的文档和测试集

    API

    如果需要一个较小且更简单的库,请参阅 big.js。 它小于一半大小,只适用于十进制数,而且只有一半的方法。 它也不允许 NaN 或者 Infinity,或者具有这里库的配置选项。

    另一种情况是,在其他事物中添加对非整数幂的支持,并将所有操作执行到指定数量的有效数字。

    负载

    库是单个JavaScript文件 bignumber.js ( 或者缩小 bignumber.min.js )。

    <scriptsrc='relative/path/to/bignumber.js'></script>

    对于 node.js 插件,可以从 npm 注册表中获得该库

    
    $ npm install bignumber.js
    
    
    
    
    var BigNumber =require('bignumber.js');

    使用AMD加载程序库加载,如 requireJS:

    require(['path/to/bignumber'], function(BigNumber) {
     // Use BigNumber here in local scope. No global BigNumber.});

    使用

    在所有示例中,不显示 below,var,分号和 toString 调用。 如果注释出的值在引号中,则意味着在前面的表达式中调用了 toString

    库导出单个函数: BigNumber,BigNumber实例的构造函数。

    它接受类型号 ( 最高 15个有效数字),字符串或者BigNumber对象的值,

    x =newBigNumber(123.4567)
    y =newBigNumber('123456.7e-3')
    z =newBigNumber(x)x.equals(y) &&y.equals(z) &&x.equals(z) // true

    可以指定从 2到 64的基。

    x =newBigNumber(1011, 2) //"11"y =newBigNumber('zz.9', 36) //"1295.25"z =x.plus(y) //"1306.25"

    BigNumber是不可变的,因为它没有被它的方法所改变。

    0.3-0.1// 0.19999999999999998x =newBigNumber(0.3)x.minus(0.1) //"0.2"x //"0.3"

    返回BigNumber的方法可以被链接。

    x.dividedBy(y).plus(z).times(9).floor()x.times('1.23456780123456789e+9').plus(9876.5432321).dividedBy('4444562598.111772').ceil()

    许多方法名称的别名较短。

    x.squareRoot().dividedBy(y).toPower(3).equals(x.sqrt().div(y).pow(3)) // truex.cmp(y.mod(z).neg()) ==1&&x.comparedTo(y.modulo(z).negated()) ==1// true

    像javascript类型一样,有 toExponentialtoFixedtoPrecision 方法

    x =newBigNumber(255.5)x.toExponential(5) //"2.55500e+2"x.toFixed(5) //"255.50000"x.toPrecision(5) //"255.50"x.toNumber() // 255.5

    可以为 toString 指定一个基。

    x.toString(16) //"ff.8"

    还有一个 toFormat 方法,它可能对internationalisation有用

    y =newBigNumber('1234567.898765')y.toFormat(2) //"1,234,567.90"

    运算的最大小数位数,包括除法( 例如 )。 使用 BigNumber 构造函数的config 方法设置除法。平方 root。基转换或者负功率操作。

    其他的算术运算总是给出精确的结果。

    BigNumber.config({ DECIMAL_PLACES:10, ROUNDING_MODE:4 })
    x =newBigNumber(2);
    y =newBigNumber(3);
    z =x.div(y) //"0.6666666667"z.sqrt() //"0.8164965809"z.pow(-3) //"3.3749999995"z.toString(2) //"0.1010101011"z.times(z) //"0.44444444448888888889"z.times(z).round(10) //"0.4444444445"

    有一个 toFraction 方法,带有一个可选的最大值参数

    y =newBigNumber(355)
    pi =y.dividedBy(113) //"3.1415929204"pi.toFraction() // ["7853982301","2500000000" ]pi.toFraction(1000) // ["355","113" ]

    isNaNisFinite 方法,如 NaNInfinity 是有效的BigNumber 值。

    x =newBigNumber(NaN) //"NaN"y =newBigNumber(Infinity) //"Infinity"x.isNaN() &&!y.isNaN() &&!x.isFinite() &&!y.isFinite() // true

    一个BigNumber的值存储在一个十进制浮点格式,按系数,指数和符号。

    x =newBigNumber(-123.456);x.c// [ 123, 45600000000000 ] coefficient (i.e. significand)x.e// 2 exponentx.s// -1 sign

    可以创建多个BigNumber构造函数,每个构造函数都有自己的独立配置,适用于从它创建的所有 BigNumber。

    // Set DECIMAL_PLACES for the original BigNumber constructorBigNumber.config({ DECIMAL_PLACES:10 })// Create another BigNumber constructor, optionally passing in a configuration objectBN=BigNumber.another({ DECIMAL_PLACES:5 })
    x =newBigNumber(1)
    y =newBN(1)x.div(3) // '0.3333333333'y.div(3) // '0.33333'

    有关更多信息,请参见 doc 目录中的API 参考。

    测试

    测试插件目录包含每个方法的测试脚本。

    可以通过节点或者浏览器运行测试。 用于节点使用

     
    $ npm test
    
    
    
     

    或者

    
    $ node test/every-test
    
    
    
    

    要测试单个方法,e.g.

    
    $ node test/toFraction
    
    
    
    

    对于浏览器,请参见测试/浏览器目录中的every-test.html 和 single-test.html。

    bignumber-vs-number.html 允许将 bignumber.js的一些方法与javascript类型的一些方法进行比较。

    版本

    '原'分支上仍支持这里库的1. x. x 版本。 以后版本的优点是它们对数字的数量很快,并且还有一些添加的方法( 请参阅更改日志 below )。 缺点是代码更多,代码复杂度增加,不再存在BigNumber存储在基本 10中的简单性。

    性能

    参见性能目录中的README

    插件生成

    对于节点,如果安装了 uglify-js

    
    npm install uglify-js -g
    
    
    
    

    然后

     
    npm run build
    
    
    
     

    将创建 bignumber.min.js。

    还将在 root 目录中创建源映射。

    反馈

    打开一个问题或者电子邮件

    迈可

    M8ch88l@gmail.com

    许可证

    MIT。

    请参见许可证。

    更改日志

    4.1.0
    • 26/09/2017
    • 从 。travis 删除节点 0.6.
    • 添加 bignumber.mjs。
    4.0.4
    • 03/09/2017
    • 将缺少的别名添加到 bignumber.d.ts。
    4.0.3
    • 30/08/2017
    • 添加类型:bignumber.d.ts。
    4.0.2
    • 03/05/2017
    • #120 解决方案 safari/webkit Bug。
    4.0.1
    • 05/04/2017
    • #121 BigNumber.default 到 BigNumber ['default']。
    4.0.0
    • 09/01/2017
    • 用 isBigNumber Prototype属性替换 BigNumber.isBigNumber 方法。
    3.1.2
    • 08/01/2017
    • 次要文档编辑。
    3.1.1
    • 08/01/2017
    • 取消注释 isBigNumber 测试。
    • 忽略点文件。
    3.1.0
    • 08/01/2017
    • 添加 isBigNumber 方法。
    3.0.2
    • 08/01/2017
    • 修正错误:BigNumber.another 调用( 由于外部作用域中的parseNumeric 声明) 后 ERRORS 可能的错误值。
    3.0.1
    • 23/11/2016
    • 使用 % 问题对旧ipad应用修复,请参阅 #57 和 #102.
    • 更正错误消息。
    3.0.0
    • 09/11/2016
    • 删除 require('crypto') - 将它的留给用户。
    • BigNumber.set 添加为 BigNumber.config 别名。
    • 默认 POW_PRECISION0
    2.4.0
    • 14/07/2016
    • #97 添加导出以支持ES6导入。
    2.3.0
    • 07/03/2016
    • #86 将模数参数添加到 toPower
    2.2.0
    • 03/03/2016
    • #91 允许更大的JS整数。
    2.1.4
    • 15/12/2015
    • 正确 UMD。
    2.1.3
    • 13/12/2015
    • 绑定时重构全局对象和加密可用性。
    2.1.2
    • 10/12/2015
    • 修正:window.crypto 没有分配给 crypto
    2.1.1
    • 09/12/2015
    • 防止代码bundler添加 crypto shim。
    2.1.0
    • 26/10/2015
    • 对于 valueOftoJSON,包括负负号和负零。
    2.0.8
    • 2/10/2015
    • 内部圆函数修正。
    2.0.6
    • 31/03/2015
    • 添加 bower.json. 调整除法后进行深度检查。
    2.0.5
    • 25/03/2015
    • 修改自述文件删除比特币地址。
    2.0.4
    • 25/03/2015
    • 关键修复 #58: 除法。
    2.0.3
    • 18/02/2015
    • 修改自述文件。添加源映射。
    2.0.2
    • 18/02/2015
    • 正确链接。
    2.0.1
    • 18/02/2015
    • 添加 maxminprecisionrandomshifttoDigitstruncated 方法。
    • 添加短格式:addmulsdsubtrunc
    • 添加 another 方法以创建多个独立的构造函数。
    • 为 2,8和 16前缀添加支持 0b0o0x
    • 允许将舍入模式指定为 toExponentialtoFixedtoFormattoPrecision的第二个参数。
    • 添加 crypto 配置属性,以便可以指定加密的安全伪随机数生成。
    • 添加 MODULO_MODE 配置属性以启用要指定的modulo 操作使用的舍入模式。
    • 添加 POW_PRECISION 配置属性以启用受限制的电源操作所计算的重要数字数。
    • 提高代码质量。
    • 改进文档。
    2.0.0
    • 29/12/2014
    • 添加 dividedToIntegerByisIntegertoFormat 方法。
    • 删除以下短格式:isFisZtoEtoFtoFrtoNtoPtoS
    • 在 1e14中存储bignumber系数,而不是基准 10.
    • 向BigNumber构造函数添加整数的快速路径。
    • 将库合并到联机文档中。
    1.5.0
    • 13/11/2014
    • 添加 toJSONdecimalPlaces 方法。
    1.4.1
    • 08/06/2014
    • 修改自述文件。
    1.4.0
    • 08/05/2014
    • 添加 toNumber
    1.3.0
    • 08/11/2013
    • 确保 sqrt 完全舍入,而不是几乎所有的情况。
    • 最大 64到。
    1.2.1
    • 17/10/2013
    • x <0和x + ( -x ) = 0时的零符号。
    1.2.0
    • 19/9/2013
    • 为堆栈抛出错误对象。
    1.1.1
    • 22/8/2013
    • 在构造函数错误消息中显示原始值。
    1.1.0
    • 1/8/2013
    • 允许带有尾随小数点的数字。
    1.0.1
    • 修正:错误消息,方法名错误
    1.0.0
    • 8/11/2012
    • 初始版本


    文章标签:JAVA  Javascript  PRE  dec  Javascript库  ARB  精确度  arithmetic  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语