【问题标题】:Only show decimal to 2 places in input box?输入框中只显示小数点到 2 位?
【发布时间】:2019-03-11 20:17:12
【问题描述】:

我正在构建一个计算器,用户可以在其中在英制和公制之间来回转换单位。

我的代码如下:

oldVal = jQuery(this).val();
oldVal = parseFloat(oldVal);
newConvertedVal = parseFloat((oldVal * 0.1589873).toFixed(2));
jQuery(this).val(newConvertedVal);

我使用 .toFixed(2) 是因为我将数字修剪到小数点后 2 位。我唯一的问题是,如果我使用以下方法转换回来:

newConvertedVal = parseFloat((oldVal / 0.1589873).toFixed(2));

然后它不会回到完全相同的数字,因为它们正在四舍五入。

出于这个原因,我想停止使用 .toFixed(2),但是我的应用程序将显示一些冗长的浮点数。

有没有办法使用完整的数字进行转换,但只显示数字到小数点后 2 位?我已经研究过在 html (https://www.w3schools.com/tags/att_pattern.asp) 中使用模式属性,但这不受 Safari 支持。

有什么想法吗?

【问题讨论】:

  • 在数学上你无能为力,你这样做的方式......因为你正想去掉一些小数,所以转换回来就行不通了。您必须将“真实”结果保留在一个变量中以进行转换......并显示另一个已删除小数的变量。

标签: jquery html floating-accuracy


【解决方案1】:

我唯一的问题是,如果我转换回来......

由于您确实想去掉一些小数,所以转换回来是行不通的。更多的是数学而不是编码。

因此,您必须将“真实”结果保留在一个变量中以进行转换...并显示另一个已删除小数的变量。

oldVal = jQuery(this).val();
oldVal = parseFloat(oldVal);
newConvertedVal = oldVal * 0.1589873;  // Keep that one!

newConvertedVal_toDisplay = newConvertedVal.toFixed(2);
jQuery(this).val(newConvertedVal_toDisplay);

然后:

// Conversion back
converterdBack = (newConvertedVal / 0.1589873);  // Or squarely use oldVal !?!

如果它在子函数中并且您需要存储该数字以供以后转换回来,您可以选择:localStoragedata-* 属性、结果对象...

【讨论】:

    【解决方案2】:

    我会使用数据函数来存储数字:

    oldVal = jQuery(this).val();
    oldVal = parseFloat(oldVal);
    var val = (oldVal * 0.1589873);
    jQuery(this).data("numberValue", val);
    jQuery(this).val(parseFloat(val.toFixed(2)));
    

    您可以稍后以这种方式将其取回(假设此时仍在上下文中):

    var theValue = parseFloat(jQuery(this).data("numberValue"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      • 2014-05-03
      • 2012-03-01
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      相关资源
      最近更新 更多