Javascript 去掉大数字的小数
我试图做一个功能来美化我的数字,这似乎是非常小的故障,例如400显示为4H,这是正确的430显示为4.3H仍然可以接受,但403显示为4.03H,这是不可接受的这里是我的代码不知道该怎么做来修复它 编辑:当数字变大时,比如5003,它们将显示为5.003K,我希望它显示5K 编辑:当数字变大时,比如5003,它们将显示为5.003K,我希望它显示5K 基本上,小数点不应该超过2 这里有一张清单Javascript 去掉大数字的小数,javascript,Javascript,我试图做一个功能来美化我的数字,这似乎是非常小的故障,例如400显示为4H,这是正确的430显示为4.3H仍然可以接受,但403显示为4.03H,这是不可接受的这里是我的代码不知道该怎么做来修复它 编辑:当数字变大时,比如5003,它们将显示为5.003K,我希望它显示5K 编辑:当数字变大时,比如5003,它们将显示为5.003K,我希望它显示5K 基本上,小数点不应该超过2 这里有一张清单 5000 -> 5K 5500 -> 5.5k 5050 -> 5.05k 5005
5000 -> 5K
5500 -> 5.5k
5050 -> 5.05k
5005 -> 5K
var范围=[
{除法器:10000000000000000000,后缀:'Dec'},
{除法器:10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
{除法器:10000000000000000000,后缀:'Oct'},
{除法器:10000000000000000000000,后缀:'Sep'},
{除法器:1000000000000000000,后缀:'Sex'},
{除法器:10000000000000000,后缀:'Quin'},
{除法器:10000000000000,后缀:'Quad'},
{除法器:10000000000,后缀:'T'},
{除法器:100000000,后缀:'B'},
{除法器:1000000,后缀:'M'},
{除法器:1000,后缀:'K'},
{除法器:100,后缀:'H'}
];
函数INP(数字,四舍五入){
对于(变量i=0;i=范围[i]。除法器){
if(round==null){
返回(数字/范围[i]。除法器)+范围[i]。后缀;
}否则{
return(number/ranges[i].除法器).toFixed(round)+ranges[i].后缀;
}
}
}
返回编号.toString();
}
.wrapper{
位置:固定;
最高:35%;
左:35%;
}
var字段=document.getElementById(“num”);
var div=document.getElementById(“输出”);
field.onkeyup=函数(){
var num=document.getElementById(“num”).value;
var rounded=document.getElementById(“rounded”).value;
如果(四舍五入==真){
var输出=INP(num,true);
}否则{
var输出=INP(num);
}
div.innerHTML=“输出:”+输出;
}
您有两个问题
首先,if(rounded==true)
不执行您想要的操作rounded
是一个字符串,将字符串与布尔值进行比较会将布尔值转换为字符串,这将导致字符串“1”
,因此它相当于if(rounded==“1”)
。您可以使用parseInt()
将输入转换为整数,然后使用if(舍入)
其次,您没有将四舍五入的值传递给INP
,而是传递了true
。然后,当它在toFixed()
中使用它时,它将转换为整数1
,因此它总是舍入到小数点后1位,而不是舍入的
输入中的数字
要去除toFixed
结果中多余的尾随零,请对其调用parseFloat()
,将其转换回数字
var范围=[
{除法器:10000000000000000000,后缀:'Dec'},
{除法器:10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
{除法器:10000000000000000000,后缀:'Oct'},
{除法器:10000000000000000000000,后缀:'Sep'},
{除法器:1000000000000000000,后缀:'Sex'},
{除法器:10000000000000000,后缀:'Quin'},
{除法器:10000000000000,后缀:'Quad'},
{除法器:10000000000,后缀:'T'},
{除法器:100000000,后缀:'B'},
{除法器:1000000,后缀:'M'},
{除法器:1000,后缀:'K'},
{除法器:100,后缀:'H'}
];
函数INP(数字,四舍五入){
对于(变量i=0;i=范围[i]。除法器){
if(round==null){
返回(数字/范围[i]。除法器)+范围[i]。后缀;
}否则{
返回parseFloat((数字/范围[i]。除法器).toFixed(舍入))+ranges[i]。后缀;
}
}
}
返回编号.toString();
}
var字段=document.getElementById(“num”);
var div=document.getElementById(“输出”);
field.onkeyup=函数(){
var num=parseInt(document.getElementById(“num”).value,10);
var rounded=parseInt(document.getElementById(“rounded”).value,10);
如果(四舍五入){
var输出=INP(数值,四舍五入);
}否则{
var输出=INP(num);
}
div.innerHTML=“输出:”+输出;
}
.wrapper{
位置:固定;
最高:35%;
左:35%;
}
您有两个问题
首先,if(rounded==true)
不执行您想要的操作rounded
是一个字符串,将字符串与布尔值进行比较会将布尔值转换为字符串,这将导致字符串“1”
,因此它相当于if(rounded==“1”)
。您可以使用parseInt()
将输入转换为整数,然后使用if(舍入)
其次,您没有将四舍五入的值传递给INP
,而是传递了true
。然后,当它在toFixed()
中使用它时,它将转换为整数1
,因此它总是舍入到小数点后1位,而不是舍入的
输入中的数字
要去除toFixed
结果中多余的尾随零,请对其调用parseFloat()
,将其转换回数字
var范围=[
{除法器:10000000000000000000,后缀:'Dec'},
{除法器:10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
{除法器:10000000000000000000,后缀:'Oct'},
{除法器:10000000000000000000000,后缀:'Sep'},
{除法器:1000000000000000000,后缀:'Sex'},
{除法器:10000000000000000,后缀:'Quin'},
{除法器:10000000000000,后缀:'Quad'},
{除法器:10000000000,后缀:'T'},
{除法器:100000000,后缀:'B'},
{除法器:1000000,后缀:'M'},
{除法器:1000,后缀:'K'},
{分隔符