test-js: 科学软件:重要数字

问题描述 投票:0回答:1

我试图使用Jest测试用TypeScript编写的科学软件,我想测试我所有的浮点结果到8位有意义的数字,但似乎ts-jest中唯一可用的测试方法 "toBeCloseTo "对小数点后的数字匹配有效。

我想测试我所有的浮点结果到8位有意义的数字,但似乎在ts-jest中唯一可用的测试方法 "toBeCloseTo",对小数点后的数字匹配在十进制记数法中起作用。

https:/jestjs.iodocsenexpect#tobeclosetonumber-numdigits。

科学和工程界的工作是以重要的数字,而不是小数点后的数字。 我是不是忽略了一些功能。 如果没有,是否有计划增加它?

同时,我有一个变通的方法,只适用于小数点后的重要数字在科学记数法中要求的重要数字范围内的数字。

test("MyFunction", () =>{
    let sigAfterDecimal = SIG_FIG - Math.floor((Math.log(ExpectedResult)/Math.log(10)));
    expect(IF97_B23T(functionInput)).toBeCloseTo(SigAfterDecimal, thisTestAccuracy);
});

但是这对于检查例如阿伏加德罗常数,6.02214076×10^23到8个显性数字是行不通的,因为在十进制符号中,小数点后没有一个相关的显性数字出现。

floating-point jestjs precision floating-accuracy significant-digits
1个回答
0
投票

好吧,我自己也试了一下,并向facebookjest主团队创建了一个pull request,以包含我的fork "float_sig_fig",它增加了BeCloseToSigFig,即标准化科学符号中的幂数是相同的,并且mantissas匹配到所需的重要数字数。 感谢Chux,我确保了log(0)的情况被覆盖。

如果它被接受的话,这将是我对一个开源软件项目的第一个源码贡献。

© www.soinside.com 2019 - 2024. All rights reserved.