Сделать расчет включает десятичные дроби - PullRequest
0 голосов
/ 03 августа 2011

Я новичок в Javascript, и я получил большую часть этого кода из другого Q & A на этом сайте, работал отлично!Единственная проблема в том, что код не учитывает десятичные дроби!Как мне получить этот код для подсчета десятичных дробей?

<table> <tr class=r1> 
<th class=d1>1-24</th> 
<th class=d2>25-49</th> 
<th class=d2>50-99</th> 
<th class=d2>100-499</th> 
<th class=d2>500 = Offert</th> 
        <tr class=r1> 
        <td class=d1 id=A>99,00:-</td> 
        <td class=d2 id=B></td> 
        <td class=d2 id=C></td> 
        <td class=d2 id=D></td> 
        <td class=d2> </td> </tr>
</table>

Это таблица, в которой я должен сделать цену в скобках.

Это JavaScript:

(function(){
// put all your JavaScript in a closure so you don't pollute the global namespace
  function extract_float_from_price ( price ) {
    return parseFloat( price.replace(/\:*-/,'') );
  }

  function evaluate_savings ( ) {
    var A = extract_float_from_price( $('#A').text() );

    $('#B').text( parseInt(A * 0.96 ) + ':-' );
        $('#C').text( parseInt(A * 0.92 ) + ':-' );
        $('#D').text( parseInt(A * 0.88 ) + ':-' );
  }

  $( evaluate_savings ); // binds to Dom Ready
})()

Пожалуйста, помогите мне получить код для отображения десятичных дробей по более точной цене.

Ответы [ 3 ]

0 голосов
/ 03 августа 2011

Что-то, что нужно учить немедленно, так что в будущем вы получите лучшие ответы, это JavaScript , а не Java.Они похожи, но отнюдь не одинаковы.В Интернете существует множество дискуссий, в которых описываются различия.

В ответ на ваш вопрос попробуйте функцию JavaScript parseFloat вместо parseInt.

0 голосов
/ 03 августа 2011

Вам нужно сделать две вещи

  • использовать parseFloat
  • заменить , на . as. это разделитель запятой в javascript.

Итак,

// get the part of the text that should be parsed
var A = /[\d,.]+/.exec($('#A').text())[0];

// replace any , with .
A = A.replace(",",".")

// parse the string into a Number
A = A.parseFloat(A, 10);

// output the result
$('#B').text( (A * 0.96)  + ':-' );

должно работать на вас

0 голосов
/ 03 августа 2011

Используйте parseFloat вместо parseInt в следующих утверждениях

    $('#B').text( parseFloat(A * 0.96 ) + ':-' );
    $('#C').text( parseFloat(A * 0.92 ) + ':-' );
    $('#D').text( parseFloat(A * 0.88 ) + ':-' );

Кстати, здорово, что какой-то ответ помог вам что-то сделать, но вы также должны попытаться понять, чтокод делает и как он делает, когда вы его используете.

И, Java! = Javascript

Обновление :

Для округления числа используйте toFixed ,Возможно, вы захотите сделать:

$('#B').text( parseFloat(A * 0.96 ).toFixed(2) + ':-' );

и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...