我尝试将结果变量切成两个十进制数字,但一切正常。即使使用Number()函数,因为 price 变量似乎是一个字符串。但是没有任何作用。在某些输入中,显示大量的小数:
这是我的代码:
_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
})
}
答案 0 :(得分:1)
您正在四舍五入后进行计算。相反,您需要在将结果输出为字符串的位置调用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>);