Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用eval的Javascript字符串计算_Javascript - Fatal编程技术网

使用eval的Javascript字符串计算

使用eval的Javascript字符串计算,javascript,Javascript,我正在构建一个简单的Javascript计算器,它使用eval()计算字符串。我遇到了几个问题 如果我运行类似于eval(“023+11”)的程序,返回30。我应该改为24岁吗 我可以选择将百分比转换为小数eval(“025*0.01”),当我预期为0.25时,它返回0.21 运行某些数字,如eval(“0.7*0.01”)返回0.0069999999,而我预期为0.007。其他时候,当我运行eval(“0.25*0.01”)时返回0.0025,这是正确的 在部署时,我担心eval()中的其他问

我正在构建一个简单的Javascript计算器,它使用eval()计算字符串。我遇到了几个问题

  • 如果我运行类似于
    eval(“023+11”)
    的程序,返回30。我应该改为24岁吗
  • 我可以选择将百分比转换为小数
    eval(“025*0.01”)
    ,当我预期为0.25时,它返回0.21
  • 运行某些数字,如
    eval(“0.7*0.01”)
    返回0.0069999999,而我预期为0.007。其他时候,当我运行
    eval(“0.25*0.01”)
    时返回0.0025,这是正确的

  • 在部署时,我担心eval()中的其他问题可能会导致错误的计算。是否存在用户可能遇到的任何其他问题。有没有更好的方法来构建计算器?如何解决我遇到的问题(我想对于以0开头的输入,我可以去掉0)?

    相关:|使用
    eval
    不是好的做法。最好使用
    parseInt
    parseFloat
    并进行算术运算。除了不正确的计算之外,你还应该担心有人入侵你的网站并使你的整个服务器宕机,因为你使用的是
    eval
    …更常见的是,出于安全考虑,
    eval
    不计算数学表达式,而是计算JS代码。这是有区别的。如果你有
    3-+-+-5
    ,那不是一个有效的数学表达式,但是返回
    -2
    的是有效的JS代码<代码>3--然而,它不是有效的数学表达式,但因为它是无效的代码,所以您会得到一个奇怪的错误。如果您希望
    3^2
    执行“power of”,那么您会得到一个惊喜,因为它是按位异或的。power运算符是
    **
    ,但它不能使用负基:
    -3**2
    是语法错误<代码>评估充满了潜在问题。