Excel电子表格公式到javascript问题#2

时间:2010-07-06 21:24:27

标签: javascript excel excel-2007 excel-formula

嘿,大家好。我再次尝试在此Excel电子表格到JavaScript转换中使匹配正确时遇到一些问题。

这是excel公式:

 =IF(IF($B$7=TRUE,$B$28/$B$10,$B$28/$B$5)>1,1,IF($B$7=TRUE,$B$28/$B$10,$B$28/$B$5))

 WHERE
 B7  = TRUE
 B28 = 76800
 B10 = 892015
 B5  = 999500

这是我到目前为止的JavaScript:

 function percent(x) { return Math.round((x-0)*100) + '%'; }

 if($('#section179').is(':checked'))
 {
  var percentRepaid = $("#rev3DScanYear").val() / $("#section179Real").val();

  if (percentRepaid > 1)
  {   
    $("#paymentCashPer").val('100.00');
  }else
  {
    percentRepaid = $("#rev3DScanYear").val() / $("#SalePrice").val();
    $("#paymentCashPer").val(percent(percentRepaid));
  }
}else
{
 //to be done   
}

 WHERE
 rev3DScanYear  = 76800
 SalePrice      = 999500
 section179Real = 892015

对于JavaScript代码,我一直得到 8%的值,我应该得到 8.61%的值,就像它在电子表格上一样。

一如既往,任何帮助都会很棒! :O)

大卫

2 个答案:

答案 0 :(得分:1)

Math.round((x-0)*100)使x为整数。

您可以尝试Math.round(((x-0)*100)*100)/100x = 8.609720...转换为x=861,然后将其除以获得您正在寻找的x=8.61,这就是他们的建议{ {3}}

...另外,不确定为什么你要从x减去0 ......?

答案 1 :(得分:0)

好的,所以我一直在看这个,我觉得第一次看起来不够深。

如果我理解的话,逻辑就是:

If Section179 is checked then Divisor is Section179Real, else it is SalePrice.

Give me the smaller of 1.00 or (rev3DScanYear / Divisor).

如果这是正确的,你可以使用=MIN(1,$B28/IF($B$7=TRUE,$B$10,$B$5))(相同的引用)在Excel中执行此操作,这意味着以下内容应该按照您的要求执行:

var Divisor = $("#SalePrice");

if($('#section179').is(':checked'))
{
  Divisor = $("#section179Real");
}

$("#paymentCashPer").val(Math.round(100*(Math.min(1, $("#rev3DScanYear")/Divisor)*100)/100;