如何将JavaScript计算结果转为货币格式并保留两位小数?
解决BTC-USDT换算结果的货币格式化问题
你的代码核心问题在于没有对计算结果正确应用格式化方法,同时input的value是字符串类型,直接计算可能导致隐式转换异常。以下是修复后的完整代码,同时实现货币格式化(保留两位小数):
修改后的JavaScript代码
let abtc; let bbtc; let cbtc; // 格式化函数:保留两位小数,可选添加货币符号 function formatCurrency(num) { // 方法1:仅保留两位小数,无货币符号 // return num.toFixed(2); // 方法2:生成美元货币格式(带$符号、千分位分隔) return new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(num); } function btcvalue() { // 将input值转为数字类型,避免字符串计算异常 bbtc = Number($("#btc").val()); // 计算后格式化再赋值 const usdtValue = abtc * bbtc; $("#btcusdt").val(formatCurrency(usdtValue)); } function btcusdtvalue() { // 从格式化后的字符串中提取纯数字(移除$符号和千分位逗号) cbtc = Number($("#btcusdt").val().replace(/[$,]/g, '')); const btcValue = cbtc / abtc; // BTC值保留两位小数(可根据需求调整精度) $("#btc").val(btcValue.toFixed(2)); } $(document).ready(function() { $.get({ url: "https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USDT", success: function(result) { abtc = result.USDT; btcvalue(); }, error: function() { console.log("获取汇率失败"); } }); });
修改后的HTML代码
<input class="asset" type="text" id="btc" step=".01" name="btc" onkeyup="btcvalue()" value="3" readonly> <input type="text" class="equiv" id="btcusdt" readonly> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
关键改动说明
- 新增
formatCurrency函数,封装两种格式化逻辑,可按需切换:toFixed(2):简单返回两位小数的数字字符串,无额外格式Intl.NumberFormat:生成符合美元规范的专业货币格式,包含$符号和千分位分隔
- 计算前强制将input的value转为
Number类型,避免字符串拼接导致的计算错误 - 反向计算时,先移除格式化字符串中的非数字字符,再转成数字计算
- 移除了HTML中
btcusdt标签无效的value="btcusdtvalue()"属性
内容的提问来源于stack exchange,提问作者RegiTech
相关产品推荐
相关产品推荐

