eval函数 c语言,Javascript eval函数返回八进制值

“100.0001”.replace(/ \ b0(\ d +)\ b / g,'$ 1')=“100.1”所以这是危险的解决方案

我的解决方案

function $calc(n, round, min, max) {

/// calculate expression from string

/// optional

/// optional. minimum allowed value. if less return 0

/// optional. maximum allowed value. if more return 0

if (!n) return 0;

try {

n = Number(eval(n

.replace(/[^\d\.\-\+\*\/\(\)\e]/g, '')//remove illegal symbols

.replace(/^0+/, '')//replace first leading zero

.replace(/[^\d\.]+0+/g, function (s) {return s.substr(0, 1);}) //replace leading zero

));

} catch (e) { return 0; }

if (n == 0 || !isFinite(n)) return 0;

if (round != undefined) { var t = Math.pow(10, round); n = Math.round(n * t) / t; }

if (min != undefined && n < min) return 0;

if (max != undefined && n > max) return 0;

return n;

}

功能是安全的。如果计算失败或NaN为无穷大,则返回0

$calc('0100.08-(0.01+00.04)')=100.03

$calc('0/0')=0 //NaN

$calc('1/3',2)=0.33 //round

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值