代码拉取完成,页面将自动刷新
API官方文档:https://mikemcl.github.io/decimal.js/ 版本:10.4.3
decimal.js是JavaScript的一个高精度数学库,它具有以下特性
可以进行128位的高精度计算和数据表示
简单且功能齐全的API
复用了许多JavaScript的 Number.prototype
和 Math
对象的方法
可以转换为二进制、八进制和十六进制值
比Java的BigDecimal的JavaScript版本更快、更小,也更容易使用
广泛的平台兼容性:仅使用JavaScript 1.5(ECMAScript 3)特性
添加了三角函数,非整数幂等数学计算方法
OpenHarmony上引入decimal.js主要用于提供高精度浮点运算能力。
doc/ #文档
test/ #测试代码
decimal.mjs #decimal源码
LICENSE #版权补充说明
README.md #软件说明
decimal.js被引入在OpenHarmony的third_party目录下,通过OpenHarmony中部件依赖的方式进行编译。
主干代码下载
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
在需要使用该库的模块中添加依赖
deps = [ "//third_party/decimal.js:decimal" ]
预处理
./build/prebuilts_download.sh
编译
./build.sh --product-name rk3568 --ccache
编译生成的文件对应路径:out/rk3568/thirdparty/decimal.js/libdecimal.z.so
。
运行
// Decimal功能需要在ArkTs中使用
// Index.ets
import { Decimal } from '@kit.ArkTS';
@Entry
@Component
struct Index {
build() {
Row() {
Column() {
Text("Test")
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(() => {
let a0 : Decimal = new Decimal(1.2345678912345678) // 可以使用Decimal表示数值
console.log("test Decimal :" + a0.toString()); // 可以通过toString获取Decimal表示的数值
// '1.2345678912345678'
Decimal.set({ precision : 10 }) // 可以通过Decimal.set设置精度等"global"配置
let a1 : Decimal = a0.add(0.5) // 进行加法操作
console.log("test Decimal set:" + a1.toString()); // 当前全局精度为10,结果为'1.734567891'
Decimal.set({ defaults : true }) // 设置回默认值配置
let dCos = Decimal.cos(0.5) // 可以使用Decimal中的三角函数等数学方法输出高精度浮点数
console.log("test Decimal cos:" + dCos.toString()); // '0.87758256189037271612'
console.log("test Math cos:" + Math.cos(0.5)); // '0.8775825618903728'
let a2 = Decimal.add(0.1, 0.2) // 此外, Decimal可以解决一些低精度计算导致的bug
console.log("test Decimal add:" + a2.toString()); // '0.3'
console.log("test Decimal add:" + (0.1 + 0.2)); // '0.30000000000000004'
})
}
.width('100%')
}
.height('100%')
}
}
本项目遵从LICENSE中所描述的许可证。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。