Мне нужно получить только два десятичных числа, но кажется, что toFixed() не работает

90
6

Я пытаюсь сократить мою переменную результата в два десятичных числа, но все работает. Даже используя функцию Number(), потому что кажется, что переменная цены - это строка. Но ничего не работает. В некоторых входах будет показано огромное количество десятичных знаков:

enter image description here

Это мой код:

_renderCoin() {
console.log(this.state.bpi);
const { input } = this.state;
const { bpi } = this.state;

return Object.keys(bpi)
.map(coin => {
const price = bpi[coin].rate_float;
// console.log(price);
// console.log(typeof price);
const result = Number(price.toFixed(2));
console.log(typeof result);

// const pi = Math.PI;
// const a = pi.toFixed(4)
// console.log(a);

if (coin === 'USD'){
return (
<div className={styles.info} key={coin}>
<hr/>
<strong>{input}</strong> BTC is: <strong>U$S
{input * result</strong>

<span className={styles.money}>{coin}</span>
</div>
)
} else {
return (
<div className={styles.info} key={coin}>
<strong>{input}</strong> BTC is: <strong>$
{input*result</strong>
<span className={styles.money}>{coin}</span>
</div>
)
}
})

}

_handleChange(event){
this.setState({
input: event.target.value
})
}

спросил(а) 2019-01-25T19:20:00+03:00 1 год, 9 месяцев назад
1
Решение
121

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

const price = bpi[coin].rate_float;
const result = input * price; // do the calculation here!
console.log(typeof result); // still a number

const denom = coin === 'USD' ? 'US$' : '$';
return (<div className={styles.info} key={coin}>
<hr/>
<strong>{input}</strong> BTC is: <strong>{denom}{result.toFixed(2)}</strong>
// ^^^^^^^^^^^
<span className={styles.money}>{coin}</span>
</div>);

ответил(а) 2019-01-25T19:30:00+03:00 1 год, 9 месяцев назад
-6

Попробуйте parseFloat(price).toFixed(2) и проверьте, работает ли он!

ответил(а) 2019-01-25T19:24:00+03:00 1 год, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема