Javascript Operators Проблема, связанная с десятичными числами - PullRequest
0 голосов
/ 02 декабря 2011

Я получил почти все, где я хочу.Моя единственная проблема в том, что по какой-то причине я не могу заставить bctf1 правильно добавить.Скажем, если bctf = 10, результат с кодом будет 100.59 вместо 10.59.Скажем, если bctf = 25, результат с кодом будет $251.03 вместо 26.03.

// BUY TOTAL
<script type="text/javascript">
function buytot(){
var bctf = document.getElementById('buyctf').value;
if(bctf.charAt(0) == "0" || bctf.charAt(0) == "" || bctf.charAt(0) == " "){
bctf2 = "0.00";
} else {
pcbctf = bctf*.029;
pcplusc = pcbctf+.30;
bctf1 = bctf+pcplusc;
bctf2 = Math.round(bctf1*100)/100;
}
document.getElementById('buyctotal').innerHTML = bctf2;
}
</script>

Вот код HTML с JS -> http://jsfiddle.net/hhWDe/5/

Ответы [ 4 ]

1 голос
/ 02 декабря 2011

Вам необходимо преобразовать значения String, возвращаемые свойствами значения элемента, в числа.Примерно так:

var bctf = Number(document.getElementById('buyctf').value);
// OR
var bctf = parseFloat(document.getElementById('buyctf').value, 10);

Также рассмотрите возможность использования числового метода "toFixed", чтобы получить ".00 десятичные разряды для целых сумм в долларах:

var oneDollar = 1;
oneDollar; // => 1
oneDollar.toFixed(2); // => "1.00"
1 голос
/ 02 декабря 2011

Вы можете добавить «+», чтобы преобразовать значение в целое число (или число с плавающей запятой).

Это займет любую строку и преобразует ее, если строка не может быть преобразована, она вернет NaN:

Итак, ваш скрипт будет выглядеть следующим образом:

var bcft = +document.getElementByID('buyctf').value;
1 голос
/ 02 декабря 2011

Принудительный тип данных для этого:

var bctf = parseFloat(document.getElementById('buyctf').value);
0 голосов
/ 02 декабря 2011

Спасибо всем :) Это рабочий код.Я добавляю bctf0 = Number(document.getElementById('buyctf').value); после остального, и все работало нормально.

// BUY TOTAL
function buytot(){
var bctf = document.getElementById('buyctf').value;
if(bctf.charAt(0) == "0" || bctf.charAt(0) == "" || bctf.charAt(0) == " "){ bctf2 = "0.00";
} else {
bctf0 = Number(document.getElementById('buyctf').value);
pcbctf = bctf0*.029;
pcplusc = pcbctf+.30;
bctf1 = bctf0+pcplusc;
bctf2 = Math.round(bctf1*100)/100;
}
document.getElementById('buyctotal').innerHTML = bctf2;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...