首页 > 解决方案 > 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>

标签: javascriptphphtml

解决方案


您正在使用 parseInt() (将结果转换为整数),请尝试使用 parseFloat() 代替。


推荐阅读