Формула таблицы Excel в javascript вопрос № 2 - PullRequest
0 голосов
/ 07 июля 2010

Привет всем снова. И снова у меня возникают некоторые проблемы с попыткой получить правильное совпадение в этой таблице 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% , как оно есть в электронной таблице.

Как всегда, любая помощь будет отличной! : О)

David

Ответы [ 2 ]

1 голос
/ 07 июля 2010

Math.round((x-0)*100) делает x целым числом.

Вы можете попробовать Math.round(((x-0)*100)*100)/100, который превращает x = 8.609720... в x=861, а затем делит его, чтобы получить x=8.61, который вы ищете, что они и предложили бы здесь .

... Кроме того, не совсем уверен, почему вы вычитаете 0 из х ...?

0 голосов
/ 07 июля 2010

Хорошо, я снова посмотрел на это, и мне кажется, что я не выглядел достаточно глубоко в первый раз.

Логика, если я ее понимаю, такова:

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

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

Если это правильно, вы можете сделать это в Excel с =MIN(1,$B28/IF($B$7=TRUE,$B$10,$B$5)) (те же ссылки), что означает, что следующее должно делать то, что вы хотите:

var Divisor = $("#SalePrice");

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

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