为了账号安全,请及时绑定邮箱和手机立即绑定

HTML JavaScript 不允许也不考虑小数

HTML JavaScript 不允许也不考虑小数

PHP
烙印99 2023-03-04 14:34:12
    我正在尝试创建一个计算器,以评估国际在线采购的两种付款方式,以做出最好的决定,要么继续使用网站原始货币 [不同于买家信用卡货币],在这种情况下,买家银行汇率将适用, 或继续网站预设汇率以匹配买家信用卡货币而忽略银行汇率。这个想法是1 美元等于3.75,有时会有所不同,但很少有网站设置自己的汇率,在我们的例子中,有时如果客户使用网站汇率购买,它会达到1 美元等于4。我试图让客户更好地了解继续进行哪个选项,以及添加许多要考虑的字段,以显示可能的最佳结果,例如银行手续费。我有一个问题,我无法将银行手续费作为百分比输入并在计算中考虑。因此,我认为客户可以将百分比作为值输入,我将在代码中进行转换。例如,银行手续费是2.75%,我会让客户输入一个值2.75,然后在代码中,我会通过换算让它工作2.75 / 100。经过测试,我可以看到代码只计算整数百分比,2或3,依此类推;它不考虑像我的情况下的小数2.75!请尽可能帮助查看代码修改的解决方案。谢谢您,并感谢您的见解!// Do all your JavaScript in a separate JavaScript sectionvar 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;}
查看完整描述

4 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

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



查看完整回答
反对 回复 2023-03-04
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

parseInt() 函数就是问题的过程。每当使用此函数时,它都会通过截断十进制值将传递给它的值转换为整数。例如parseInt("2.7")= 2。您可以改用以下内容。

total.value = (parseInt(main.value, 10) * parseInt(joint1.value, 10)) + (parseInt(joint3.value, 10)) + (parseInt(main.value, 10) * ((parseFloat(joint2.value, 10) / 100)));


查看完整回答
反对 回复 2023-03-04
?
慕后森

TA贡献1802条经验 获得超5个赞

用 parseFloat 替换 parseInt,你可以使用 .toFixed 和 parse float 来限制 deci



查看完整回答
反对 回复 2023-03-04
?
墨色风雨

TA贡献1853条经验 获得超6个赞

对于十进制数,您必须使用.parseFloat()函数,而不是.pareseInt()


// 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 = (parseFloat(main.value) * parseFloat(joint1.value)) + (parseFloat(joint3.value)) + (parseFloat(main.value) * ((parseFloat(joint2.value) / 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>





查看完整回答
反对 回复 2023-03-04
  • 4 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号