编译为JavaScript选项,该选项使用十进制库而不是IEEE 754数学?
在JavaScript中编译为JavaScript选项,该选项使用十进制库而不是IEEE 754数学?,javascript,typescript,decimal,ieee-754,Javascript,Typescript,Decimal,Ieee 754,在JavaScript中0.1+0.2=0.300000000004并解释了为什么是因为数学。我正在处理财务/会计领域的应用程序,希望找到一种方法使0.1+0.2=0.3 因此,我正在寻找一种解决方案,该解决方案可以使用类似于以下示例的代码,并使用Decimal类型注释(使用语法) 编译/宏扩展过程可以输出使用JavaScript十进制库的代码(例如),因此c=0.3而不是0.3000000000004 var a, b, c; a = new Decimal(0.1); b = new De
0.1+0.2=0.300000000004
并解释了为什么是因为数学。我正在处理财务/会计领域的应用程序,希望找到一种方法使0.1+0.2=0.3
因此,我正在寻找一种解决方案,该解决方案可以使用类似于以下示例的代码,并使用Decimal类型注释(使用语法)
编译/宏扩展过程可以输出使用JavaScript十进制库的代码(例如),因此c=0.3
而不是0.3000000000004
var a, b, c;
a = new Decimal(0.1);
b = new Decimal(0.2);
c = a.plus(b);
Mozilla宏似乎支持“让您定义自己的运算符或覆盖内置运算符”的操作 问题:sweet.js是否可能出现这种行为?有没有类似的例子
TypeScript可传输源代码,以前使用TypeScript时曾询问过此概念:
此外,在一系列关于将ActionScript交叉编译为JavaScript的文章中,有一位作者总结说,出于一致性原因,他们希望“ActionScript和JavaScript中出现相同的错误结果”,但这并不意味着需要额外的类型注释 问题:是否有其他策略或编译为JavaScript选项来实现此目标 现在有没有编译成JavaScript的解决方案可以做到这一点 值得一提的是,google的Dart支持运算符重写,并且具有可选的类型注释: 运算符重写:
可选类型:或者,您可以使用单独的数学库完成所有数学运算。例如,表达式解析器附带并支持bignumbers(由以下各项提供支持):
我不知道这对你的应用程序来说是否可行和方便,但至少可以让你用“可读”的表达式来写你的方程式。不明白为什么这会被选为离题题,所以编辑后的问题会更明确?开放编辑建议您没有考虑明确使用
decimal.js
?
var a, b, c;
a = new Decimal(0.1);
b = new Decimal(0.2);
c = a.plus(b);
math.config({number: 'bignumber'});
// using a parser to manage variables for you in an internal scope:
var parser = math.parser();
parser.eval('a = 0.1'); // BigNumber, 0.1
parser.eval('b = 0.2'); // BigNumber, 0.2
parser.eval('c = a + b'); // BigNumber, 0.3
// or without a parser:
var scope = {};
math.eval('a = 0.1', scope); // BigNumber, 0.1
math.eval('b = 0.2', scope); // BigNumber, 0.2
math.eval('c = a + b', scope); // BigNumber, 0.3
// scope now contains properties a, b, and c