处理小数

时间:2013-01-14 21:29:50

标签: javascript html

我需要帮助解决这个小数问题。通过在同一文本框上制作英尺和英寸。 在以英尺(ft)为单位获得人的高度的情况下,情况是5.12英尺= 6英尺,5.13就像不必要(不是真的,我只是想用英尺和英寸来订购)。

有些会使它成为2个不同的文本框,分别为英尺和英寸。但我想只用一个文本框来尝试它,它不会达到5.12,或者在文本框的情况下只能接受.11英寸。

任何帮助都将不胜感激。

提前致谢。

3 个答案:

答案 0 :(得分:1)

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

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

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

但是另一个问题:你这样做的原因是什么,而不是两个下拉?你可以用0到11填充英寸,这很简单。

答案 1 :(得分:1)

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

$('#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('');
    }
})

Demo

答案 2 :(得分:0)

你通常通过分别计算整个部分和小数部分来解决这个问题。

要查找小数部分(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;
}