繁体   English   中英

处理小数

[英]dealing with decimals

我需要有关此十进制问题的帮助。 通过使英尺和英寸在同一文本框中。 在以英尺(ft)为单位的人的身高的情况下,情况是5.12ft = 6ft,而5.13就像是不必要的(不是,我只是在尝试以英尺和英寸为单位)。

有些人将其设为2个不同的文本框,分别为英尺和英寸。 但是我想只用一个不会达到5.12的文本框来尝试它,或者在文本框的情况下最多只能接受0.11英寸。

任何帮助,将不胜感激。

提前致谢。

除了每次输入字符时都会解析字符串,我看不到任何其他解决方法。

根据小数点将字符串分成英尺和英寸,并禁止任何超过11英寸的字符。

您还可以在用户输入完字符串后解析该字符串,并通知她表单是否不正确或不合理。

但是还有另一个问题:您是通过这种方式(而不是两个下拉菜单)这样做的任何特殊原因吗? 您可以用0到11填充英寸,这很简单。

一种使用我的jQuery iMask插件的可能性:

$('#i4').iMask({
      type   : 'fixed'
    , mask   : '9\' 99\"'
    , sanity : function( val ){
        val = /([\d ]\' )([\d ])([\d ])\"/.exec( val );

        (val[2]>1) && (val[3]=val[2]) && (val[2]='0');
        (val[2]==1) && (val[3]>1) && (val[3]='1');

        val.shift();
        return val.join('');
    }
})

演示版

通常,您通过分别计算整个部分和小数部分来处理此问题。

要找到小数部分(0.12),只需从原始数(5.12)中减去整个部分(5)。 当然还要乘以英尺的英寸数。

var height = 5.12;
var feet = Math.floor(height);
var inches = Math.floor( 12.0 * (height-feet) );

在那里我四舍五入。 如果要四舍五入到最接近的值,可以执行以下操作:

var inches = Math.round( 12.0 * (height-feet) );
if( inches == 12 ) {
    feet++;
    inches = 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM