2010-07-06 51 views
0

再次大家。然而,我又遇到了一些问题,试图让这个Excel Spreadsheet到JavaScript转换的正确匹配。Excel电子表格公式以javascript问题#2

这里是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)

大卫

回答

1

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

你可以尝试Math.round(((x-0)*100)*100)/100这使得x = 8.609720...x=861,然后将其划分得到x=8.61你要找的,这是什么,他们会建议here

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

+0

Coldnorth:当我试图做到这一点时,我得到了7.68。我在想什么? – StealthRT 2010-07-06 23:36:16

+0

出于某种原因在我的TI-84 76800/999500 = .08,但是当我在JavaScript 768000/999500中做同样的事情= 0.768384192096048 ??? – StealthRT 2010-07-06 23:52:47

+0

76,800/999,500 = 7.68%,76,800/892,015 = 8.61%;你用SalePrice而不是Section179Real来划分它。 – floatingLomas 2010-07-07 15:41:21

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;