2

代码是:

  function roundAmount(theDecimal) { 
    var s = "" + Math.round(theDecimal * 100) / 100 
    var i = s.indexOf('.') 
    if (i < 0) { 
        return s + ".00" 
    } 
    var t = s.substring(0, i + 1) + s.substring(i + 1, i + 3) 
    if (i + 2 == s.length)     
        t += "0" 
    return t 
  }

有错误的行:

if (i < 0) return s + ".00"

错误是:

error: expected (;)

有谁知道如何解决这一问题?

4

5 回答 5

5
if (i < 0) return s + ".00";

注意;语句末尾的 。就个人而言,我更喜欢将我几乎所有的ifs 都包围在其中,{}例如

if (i < 0) 
{
    return s + ".00";
}

这有助于调试和单步执行代码。

于 2009-07-23T17:16:55.803 回答
5

关于你的脚本:

上面脚本中的问题是最后一个 if 语句,它执行一些操作,然后返回。操作后需要一个分号。

将来,作为一种良好做法,请确保在每个有效语句后放置一个分号。这样就不会打扰你了。

将每一行视为一个想法,而花括号则是将想法“组合”和“关联”在一起的方式。

下面是一个完整的想法,上面写着“给我一个变量“i”并给它值 1 + 2;

var i = 1 + 2;

下面是对“如果 i 为 3,则将 i 加 1”的条件的完整思考。“i 加 1”这个思想是它自己的思想,所以它需要一个分号。由于 IF 语句的花括号很特殊,因为它们的“完整想法”之后不需要分号,只要您在其后放置一个“块”(这是花括号的真正含义),将想法括起来.

这意味着以下内容是有效的:

if( i == 3 ) {
    i = i + 1;
}

以下内容无效,因为 if 之后的分号结束了 if 之前的“想法”,如果 i 等于 3 知道该怎么做:

if( i == 3 ) ; {
    i = i + 1;
}

有关基本的 JavaScript 教程,请查看W3Schools

“一定会有更好的办法?”

每当您发现自己在十进制上进行大量字符串操作时,最好问问自己“有没有更好的方法来做到这一点?”。

看起来你正在编写一个函数来将一个数字四舍五入到最接近的百分之一,同时显示两个小数点。有一种更简单的方法可以做到这一点。您可以四舍五入到最接近的百分之一并让 javascript 输出定点数。

例子:

function roundAmount( theDecimal ) {
    //first round to the nearest hundredth
    //then return the value with two decimal places as a string
    return theDecimal.toFixed( 2 );
}
于 2009-07-23T17:43:46.717 回答
4

在行尾添加分号!像这样:

if (i < 0) return s + ".00";
于 2009-07-23T17:16:24.430 回答
4

它需要一个分号,所以添加一个分号。

if (i < 0) 
  return s + ".00";
于 2009-07-23T17:16:26.350 回答
0

我看不出您在之前的评论中发布的代码有什么特别的问题,但我建议您始终在您的语句末尾添加一个分号。尽管它们不是必需的,但通常可以更轻松地调试此类问题。

于 2009-07-23T17:31:59.610 回答