Java-script:尝试向我的变量添加小数位

Posted

技术标签:

【中文标题】Java-script:尝试向我的变量添加小数位【英文标题】:Java-script: Trying to add decimal places to my variable 【发布时间】:2019-06-21 02:12:36 【问题描述】:

所以我在 slackoverflow 上寻找与我类似的答案,但没有找到与我的问题类似的任何东西。我有一个问题,我下面的变量的小数位没有显示 2 个小数位

1) 最大值(现在可以使用) 2)费用(我遇到的问题)

所以我曾经固定在一个 var Max 上,它可以工作:)。但问题是使用 toFixed,toFixed() 专门将数字转换为字符串。因此,一旦变量 max 已经是一个字符串,再次对其调用 ' toFixed() ' 是一个无效操作。因为当我尝试在“费用”上使用它时

 var max = (principal/2)-fees;

从函数来看,它不起作用。即使我创建了一个新变量,例如:

var Test = fees.toFixed(2)

根据我上面解释的解释并使用https://repl.it/languages 来帮助我,它仍然不起作用。我发现了关于 Math.round(fees) 的信息,如下所示,但它去掉了小数,只显示整数。 ($8 是下面代码中的费用变量。)

有什么方法可以修复费用变量以显示 2 个小数位,或者做我在下面做的事情并为费用创建一个新的 var = 并使用一些我从未听说过的代码。 (仍在学习)谢谢

<script>
    function CollFee(input, principal, fees)

        var max = ( (principal/2)-fees ).toFixed(2);
        var test = Math.round(fees);
        //var input = this.value;
        //alert(input);

        if(input.value > max)
            input.value = '';
            var text = 'Collection Fee is too high, the total of all collection fees can only be 50% of the Original Principal.';
            text = text + ' Current fee on account is $' +test+ '. THE Maximum additional fee allowed is $' +max;
            alert(text);
            //document.getElementById('collfee_<?php echo $dbid; ?>').value = '';
            //input.value = '';

        
    ;
</script>

【问题讨论】:

可能与***.com/questions/4435170/… 重复。你可以在那里找到答案。 【参考方案1】:

有点不清楚,但问题可能是您应该将数字格式化为正确的字符串,在所有计算完成之后(所以在消息创建期间) - 所以这可能是您想要的

function CollFee(input, principal, fees)

  var max = ( (principal/2)-fees );
  var test = Math.round(fees);

  if(input.value > max)
      input.value = '';
      var text = 'Collection Fee is too high, the total of all collection fees can only be 50% of the Original Principal.';
      text =  text + ' Current fee on account is $' 
            + test.toFixed(2) + '. THE Maximum additional fee allowed is $' 
            + max.toFixed(2);
      alert(text);
      //document.getElementById('collfee_<?php echo $dbid; ?>').value = '';
      //input.value = '';

  
    ;
Type number and press enter (principal=101, fee=33) (if you type 100 you will see alert)<br>
<input type="text" onchange="CollFee(this, 101,33)"/>

【讨论】:

【参考方案2】:

您应该真正将逻辑与显示分开。 .toFixed 仅应在您完成数学并处理字符串时使用。您可能遇到的第二个问题是(如果我假设正确的话)因为 'input.value' 也是一个字符串,那么将 input.value 与 max 进行比较也会给您不正确的结果。

试试

function CollFee(input, principal, fees)

    var max = ( (principal/2)-fees );
    var val = parseFloat(input.value)

    if(val > max)
        input.value = '';
        var text = 'Collection Fee is too high, the total of all collection fees can only be 50% of the Original Principal.';
        text = text + ' Current fee on account is $' +fee.toFixed(2)+ '. THE Maximum additional fee allowed is $' +max.toFixed(2);
        alert(text);
    
;

【讨论】:

感谢您的帮助。但我发布了有效的方法:)。感谢您的帮助【参考方案3】:

.toFixed() 的一个简单替代方法是乘法、向下舍入和除法,例如:

let num = 65.4321;
let bigNum = num * 100;
let wholeNum = Math.floor(bigNum);
let currencyFormattedNum = wholeNum/100;
console.log(currencyFormattedNum); // Logs 65.43

您可以在此处找到更多详细信息:https://javascript.info/number

【讨论】:

【参考方案4】:

我非常感谢您在将来解决此问题的所有回答和有用的建议,但是您的方法都不起作用,因为弹出窗口没有出现。我进行了实验,发现这是可行的。只是为了向你们表示感谢。

<script>
    function CollFee(input, principal, fees)

        var Smax = ( (principal/2)-fees ).toFixed(2);
        var max = ( (principal/2)-fees )
        var FeeroundP = fees * 1;
        var Feeround = FeeroundP.toFixed(2);
        //var input = this.value;
        //alert(input);

        if(input.value > max)
            input.value = '';
            var text = 'Collection Fee is too high, the total of all collection fees can only be 50% of the Original Principal.';
            text = text + ' Current fee on account is $' +Feeround+ '. THE Maximum additional fee allowed is $' +Smax;
            alert(text);
            //document.getElementById('collfee_<?php echo $dbid; ?>').value = '';
            //input.value = '';

        
    ;
</script>

【讨论】:

以上是关于Java-script:尝试向我的变量添加小数位的主要内容,如果未能解决你的问题,请参考以下文章

当 Dojo 自动完成器的值改变时调用 java-script 函数

jQuery在数组中拆分变量值

如何使用java-script和jquery为列表中重复单击的标签存储类名?

尝试使用 sqlite3 向我的 discord.py 机器人添加自定义前缀

我正在尝试向我的游戏窗口添加背景颜色,但它不起作用,并且不断弹出属性错误。有啥建议吗?

如何向我的 JButtons 添加图像功能