将分数字符串转换为十进制?

新手上路,请多包涵

我正在尝试创建一个 javascript 函数,它可以采用分数输入字符串,例如 '3/2' 并将其转换为十进制 - 作为字符串 '1.5' 或数字 1.5

 function ratio(fraction) {
    var fraction = (fraction !== undefined) ? fraction : '1/1',
    decimal = ??????????;
    return decimal;
});

有没有办法做到这一点?

原文由 ryanve 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 587
2 个回答

由于没有人提到它,所以有一个快速而肮脏的解决方案:

 var decimal = eval(fraction);

它具有正确评估各种数学字符串的好处。

 eval("3/2")    // 1.5
eval("6")      // 6
eval("6.5/.5") // 13, works with decimals (floats)
eval("12 + 3") // 15, you can add subtract and multiply too

这里的人会很快提到使用原始评估的危险,但我将其作为懒人的答案提交。

原文由 user415715 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是执行此操作所需的最少代码:

 var a = "3/2";
var split = a.split('/');
var result = parseInt(split[0], 10) / parseInt(split[1], 10);
alert(result); // alerts 1.5

JsFiddle:http: //jsfiddle.net/XS4VE/

需要考虑的事项:

  • 被零除
  • 如果用户给你的是整数而不是分数,或者任何其他无效输入
  • 舍入问题(例如 1/3)

原文由 Matt Greer 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题