Javascript 将文本框值四舍五入

Javascript 将文本框值四舍五入,javascript,rounding,Javascript,Rounding,我有一个双输入模式的radtextbox。我把它设定为1。因此,它给出的结果是 20.6 => 20.5 20.7 => 20.5 20.9 => 21.0 但我所需要的就是这样(很少有样品) 我试图通过限制一个以上的十进制值来解决这个问题。但是代码工作不正常 代码: 函数GetIndex(发送方,参数){ var textbox=$find(“”); var val=textbox.get_value(); var dsds=val.toString(); 如果(d

我有一个双输入模式的radtextbox。我把它设定为1。因此,它给出的结果是

 20.6 => 20.5
 20.7 => 20.5
 20.9 => 21.0
但我所需要的就是这样(很少有样品)

我试图通过限制一个以上的十进制值来解决这个问题。但是代码工作不正常

代码:


函数GetIndex(发送方,参数){
var textbox=$find(“”);
var val=textbox.get_value();
var dsds=val.toString();
如果(dsds.indexOf(“.”>-1){
如果(dsds.length-(dsds.indexOf(“.”+1)>1){
警报(dsds.length-(dsds.indexOf(“.”+1));
参数设置\取消(真);
}
其他的
返回true;
}
否则{
if(parseInt(dsds)>0){
返回true;
}
其他的
参数设置\取消(真);
}
}


我正在使用以下代码。(可能更笨重)

函数转换浮点十进制(num,nDecimal)
{
var s;
如果(nDecimal==null)
nDecimal=1;
如果(nDecimal==1)
{
if(num<0)
{
num=Math.abs(num);
s=((数学四舍五入(parseFloat(num)*10)/10)*-1);
}
其他的
s=(Math.round(parseFloat(num)*10)/10);
s=s.toString();
如果(s.indexOf(“.”)=-1)
s+=“.0”;
}
否则如果(nDecimal==2)
{
if(num<0)
{
num=Math.abs(num);
s=((数学四舍五入(parseFloat(num)*100)/100)*-1);
}
其他的
s=(Math.round(parseFloat(num)*100)/100);
s=s.toString();
如果(s.indexOf(“.”)=-1)
s+=“.00”;
如果(s.indexOf(“.”)=s.length-2)//添加前导0
s+=“0”;
}
else if(nDecimal==0)
{
if(num<0)
{
num=Math.abs(num);
s=(数学四舍五入(num)*-1);
}
其他的
s=(Math.round(num));
}
其他的
{
s=parseInt(s);
}
返回s;
}

您可以使用Jquery进行此操作

 var num = parseFloat(document.getElementById('textbox').value);
 var new_num = Math.round(num).toFixed(2);

请在此处尝试

以下代码符合预期。谢谢你的回复

代码:

    function change(lnk, evt) {
    var textbox = $find('<%= CPDTextBox.ClientID %>');
    var val = lnk.value.toString();
    if (val != '') {
        if (val.indexOf(".") > -1) {
            var values = new Array();
            values = val.split(".");
            var rouDec = round(parseFloat('.' + values[1]), 1);

            if (rouDec > .5) {
                val = parseInt(values[0]) + 1;
            }
            else if (rouDec == .5) {
                val = parseInt(values[0]) + .5;
            }
        }
    }

    textbox.set_value(val);
}

function round(n, dec) {
    n = parseFloat(n);
    if (!isNaN(n)) {
        if (!dec) var dec = 0;
        var factor = Math.pow(10, dec);
        return Math.floor(n * factor + ((n * factor * 10) % 10 >= 5 ? 1 : 0)) / factor;
    } else {
        return n;
    }
} 
功能更改(lnk、evt){
var textbox=$find(“”);
var val=lnk.value.toString();
如果(val!=''){
如果(val.indexOf(“.”>-1){
var值=新数组();
值=val.split(“.”);
var rouDec=四舍五入(parseFloat('.'+值[1]),1);
如果(rouDec>.5){
val=parseInt(值[0])+1;
}
否则如果(rouDec==0.5){
val=parseInt(值[0])+.5;
}
}
}
文本框。设置_值(val);
}
功能轮(n,12月){
n=浮点(n);
如果(!isNaN(n)){
如果(!dec)var dec=0;
var系数=数学功率(12月10日);
返回数学下限(n*因子+((n*因子*10)%10>=5?1:0))/因子;
}否则{
返回n;
}
} 

这其中的哪一部分是jQuery?
<telerik:RadNumericTextBox ID="CPDPointsTextBox" Width="39px" runat="server" MaxLength="5"
                                            MaxValue="999" MinValue="0">
                                            <NumberFormat DecimalDigits="1" KeepNotRoundedValue="false" />
                                            <ClientEvents OnValueChanged="CPDPointsTextBox_ValueChanged" OnKeyPress="GetIndex" />
                                        </telerik:RadNumericTextBox>
function convertFloatDecimal (num, nDecimal)
{
    var s;
    if (nDecimal == null)
        nDecimal = 1;
    if (nDecimal == 1)
    {
        if (num < 0)
        {
            num= Math.abs (num);
            s = ((Math.round (parseFloat (num) * 10)/10 ) * -1);
        }
        else
            s =  (Math.round (parseFloat (num) * 10)/10);
        s = s.toString();
        if (s.indexOf (".") == -1)
         s+= ".0";

    }
    else if (nDecimal == 2)
    {
        if (num < 0)
        {
            num= Math.abs (num);
            s = ((Math.round (parseFloat (num) * 100) / 100) * -1);
        }
        else
            s =  (Math.round (parseFloat (num) * 100) / 100);   
        s = s.toString();
        if (s.indexOf (".") == -1)
             s+= ".00";

        if (s.indexOf (".") == s.length-2) // Add leading 0
             s+= "0";
    }
    else if (nDecimal == 0)
    {
        if (num < 0)
        {
            num= Math.abs (num);
            s = (Math.round (num) * -1);
        }
        else
            s =  (Math.round (num));
    }
    else
    {
        s = parseInt (s);
    }
    return s;
}
 var num = parseFloat(document.getElementById('textbox').value);
 var new_num = Math.round(num).toFixed(2);
    function change(lnk, evt) {
    var textbox = $find('<%= CPDTextBox.ClientID %>');
    var val = lnk.value.toString();
    if (val != '') {
        if (val.indexOf(".") > -1) {
            var values = new Array();
            values = val.split(".");
            var rouDec = round(parseFloat('.' + values[1]), 1);

            if (rouDec > .5) {
                val = parseInt(values[0]) + 1;
            }
            else if (rouDec == .5) {
                val = parseInt(values[0]) + .5;
            }
        }
    }

    textbox.set_value(val);
}

function round(n, dec) {
    n = parseFloat(n);
    if (!isNaN(n)) {
        if (!dec) var dec = 0;
        var factor = Math.pow(10, dec);
        return Math.floor(n * factor + ((n * factor * 10) % 10 >= 5 ? 1 : 0)) / factor;
    } else {
        return n;
    }
}