javascript - HTML JavaScript 不允许也不考虑小数
问题描述
我正在尝试创建一个计算器,以评估国际在线购买的两种付款方式,以做出最佳决定,要么继续使用网站原始货币 [与买家信用卡货币不同],在这种情况下,买家银行汇率将适用, 或继续使用网站预设汇率以匹配买家信用卡货币而忽略银行汇率。
想法是1 USD等于3.75,有时会发生变化,但很少有网站设置自己的汇率,在我们的例子中,有时如果客户使用网站汇率购买,它会达到1 USD等于4。
我试图让客户更好地了解要继续使用哪个选项,并添加许多要考虑的字段,以显示可能的最佳结果,例如银行手续费。
我有一个问题,我无法将银行手续费作为百分比输入并在计算中考虑。因此,我认为客户可以输入百分比作为值,然后我将在代码中进行转换。例如,银行手续费是2.75%,我让客户输入一个值2.75,在代码里面,我会通过转换让它工作2.75 / 100
。经过测试,我可以看到代码只是计算百分比的整数,要么是2要么是3,依此类推;它不考虑小数,例如我的情况2.75!
如果可能,请帮助查看代码修改的解决方案。
谢谢您,并感谢您的见解!
// Do all your JavaScript in a separate JavaScript section
var main = document.getElementById("Dep-main");
var joint1 = document.getElementById("Dep-joint1");
var joint2 = document.getElementById("Dep-joint2");
var joint3 = document.getElementById("Dep-joint3");
var total = document.getElementById("Total-dep");
var inputs = Array.prototype.slice.call(document.querySelectorAll("div > input"));
inputs.forEach(function(input){
input.addEventListener("blur", function(){
// Always supply the second argument to parseInt() (the radix) so you
// dont' get non-base 10 answers.
total.value = (parseInt(main.value, 10) * parseInt(joint1.value, 10)) + (parseInt(joint3.value, 10)) + (parseInt(main.value, 10) * ((parseInt(joint2.value, 10) / 100)));
});
});
label {
display: block;
text-align: center;
line-height: 150%;
font-size: .85em;
}
input[type=text], select {
width: 100%;
padding: 12px 20px;
margin: 8px 0;
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
text-align: center;
}
input[type=submit] {
width: 100%;
background-color: #4CAF50;
color: white;
padding: 14px 20px;
margin: 8px 0;
border: none;
border-radius: 4px;
cursor: pointer;
}
input[type=submit]:hover {
background-color: #45a049;
}
div {
border-radius: 5px;
background-color: #f2f2f2;
padding: 20px;
}
.center {
margin: auto;
width: 60%;
border: 3px solid #73AD21;
padding: 10px;
}
<!DOCTYPE html>
<html>
<body>
<br>
<center><img src="https://logos-download.com/wp-content/uploads/2016/03/Asos_logo.png" width="270" height="108"></center>
<br>
<center><h3>Best Payment Option Evaluator</h3></center>
<br>
<div class="center">
<label for="dep-nothing">Enter ASOS total amount in SAR [using ASOS Site Exchange Rate]</label>
<input type="text" id="dep-nothing" value="0">
<hr>
<label for="dep-main">Ebter total amount in USD</label>
<input type="text" id="Dep-main" value="0">
<label for="dep-joint1">Enter todays exchange rate from your bank [1 USD = X SAR]</label>
<input type="text" id="Dep-joint1" value="0">
<label for="dep-joint2">Enter bank fees in numbers [will be converted into percentage]</label>
<input type="text" id="Dep-joint2" value="0">
<label for="dep-joint3">Enter buyer commission value in SAR</label>
<input type="text" id="Dep-joint3" value="0">
<label for="total-dep"><b>If you proceed with USD, below amount will be deducted from your bank accoutn in SAR , <mark>Approx.</mark></b></label>
<input type="text" id="Total-dep" disabled readonly>
</div>
<br>
</body>
</html>
解决方案
您正在使用 parseInt() (将结果转换为整数),请尝试使用 parseFloat() 代替。
推荐阅读
- java - How to add a value in object in catch part?
- three.js - 将物理学应用于复杂形状的方法
- sql - DB2 使用标记的持续时间对多个日期间隔无效
- hyperledger-fabric - Hyperledger Fabric 如何执行背书,谁是 Hyperledger Fabric 的客户
- r - 在R中对齐下标轴标签
- java - 静态字段是如何通过对象引用的?
- intershop - 在 Intershop 7.10 中覆盖系统“找不到 URL”模板?
- mongodb - Mongodb求和、排序和排名
- python-3.x - Python:与更改的绘图默认值相关的缓慢绘图?
- javascript - 按主行展开/折叠行分组?