【问题标题】:Math on currency/strings with dollar signs带有美元符号的货币/字符串的数学运算
【发布时间】:2012-12-11 00:34:21
【问题描述】:

是否有可能有一个字符串,如$10.50 并在 javascript 中对其进行数学运算?我在这个网站上找不到答案。

JSFIDDLE

HTML:

<p id="cost">$10.50</p>
---
<div id="output"></div>

​ JavaScript:

$('#output').html($('#cost').html() / 2);​

输出:

NaN

【问题讨论】:

  • @AndrewWhitaker 我已经尝试了我的 JSFIDDLE 链接中的内容。

标签: javascript math currency


【解决方案1】:

如果你可以用它去掉美元符号;因为它通常在第一个位置,你可以简单地在字符串值上使用.substring(1)

$('#output').html($('#cost').html().substring(1) / 2);​

【讨论】:

    【解决方案2】:

    你可以这样做:

    <p id="cost" data-value="1050" data-currency="$">$10.50</p>
    ---
    <div id="output"></div>
    
    
    var el = $("#cost");
    $('#output').html( el.data("currency") + (el.data("value") / 2 / 100));​
    

    http://jsfiddle.net/QkCyM/5/

    【讨论】:

      【解决方案3】:

      不,但为什么不将“$”分开:

      <p>$<span id="cost">10.50</span></p>
      

      或者你必须解析字符串并去掉'$"

      【讨论】:

        【解决方案4】:

        没有。您不能对字符串进行数学运算。如果你这样做了,JavaScript 会尝试隐式类型转换,但它对于不以数字开头的字符串会失败 - 导致 NaN

        首先,去掉美元符号(例如 .slice(1)),然后使用 parseFloat 获取数字。现在进行除法,然后使用.toFixed(2) 将其转换回字符串以输出。更新小提琴:http://jsfiddle.net/QkCyM/7/.

        别忘了What Every Programmer Should Know About Floating-Point Arithmetic

        【讨论】:

          猜你喜欢
          • 2018-03-29
          • 2011-11-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多