javascript - 在 Javascript 中将 Math.exp() 与 BigDecimal 一起用于大型 float

标签 javascript math bigdecimal

我正在尝试用 Javascript 执行以下计算:

e^x / (1 + e^x)

其中 x 是一个长 float 。

在这种情况下,我要求至少精确到小数点后 10 位。

我一直在使用 BigDecimal准确处理 float ,如 The Floating Point Guide 中的建议.

我的第一次尝试:

var foo = new BigDecimal(myVeryLongFloatingPoint)
var bar = Math.exp(foo);
var spam = bar.divide(bar.add(new BigDecimal("1")));

导致错误(其中xxxxx是 float ):

TypeError: Object xxxxx has no method 'add'

所以我尝试将 bar 转换为 BigDecimal 对象:

var foo = new BigDecimal(myVeryLongFloatingPoint)
var bar = new BigDecimal(Math.exp(foo));
var spam = bar.divide(bar.add(new BigDecimal("1")));

这又会导致错误(其中 xxxxx 是 float ):

BigDecimal(): Not a number: xxxxx

我哪里错了?

这是处理这种需要高精度的浮点计算的明智方法吗?

最佳答案

您应该将字符串传递给 BigDecimal:

var bar = new BigDecimal(Math.exp(foo).toString());

关于javascript - 在 Javascript 中将 Math.exp() 与 BigDecimal 一起用于大型 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7487844/

相关文章:

python - 凸包的增量面积

php - PHP 和 MySQL 中的数学

c++ - 多边形分割与三角剖分

java - 计算大根 : bigdecimal/java

javascript - 推荐一个HTML5/Javascript的开发环境?

javascript - 带长选项的样式化选择框

java - BigDecimal 除法为某些计算返回错误的结果

java - 需要BigDecimal输出的解决方案

javascript - 使用数组对多个文本字段进行表单验证

javascript - 根据网站背景颜色更改背景颜色