javascript - 我只需要得到两个十进制数,但似乎 toFixed() 不起作用

标签 javascript reactjs

我尝试将我的结果变量削减为两位十进制数,但一切都有效。即使使用 Number() 函数,因为 price 变量似乎是一个字符串。但没有任何作用。在某些输入中,会显示大量小数:

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
        })
    }

最佳答案

您正在四舍五入后进行计算。相反,您需要在将结果输出为字符串时调用 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>);

关于javascript - 我只需要得到两个十进制数,但似乎 toFixed() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54369131/

相关文章:

javascript - Angular JS 中带有 Ng-Include 的未定义函数

javascript - 当用户单击 anchor 标记时防止默认事件(浏览器导航)

javascript - 如何在 react 中隐藏和显示一个div

meteor - 警告 : Each child in an array or iterator should have a unique "key" prop. 检查 `SocialMenu` 的渲染方法。 (Meteor.js 应用程序中的 React.js)

reactjs - 如何从一个组件更新 Hook 并使其更新另一个组件?

javascript - 获取日期输入最大和最小日期

javascript - 如何从 webview 打开 safari 移动应用程序中的链接

javascript - 如何使用reactJS 模拟此 jQuery 行为 : add/remove className from different divs

node.js - CocoaPods找不到Pod "lottie-ios"的兼容版本

javascript - React 表 - 如何合并特定列和单元格值的表