比如
var t = 99.99;
document.write(t/100);
显示0.9998999999999999有什么办法保留小数点2位。 并且不四舍五入
t.toFixed(2)是四舍五入的?不想得到小数点后substring取。有什么好办法。谢谢
var t = 99.99;
document.write(t/100);
显示0.9998999999999999有什么办法保留小数点2位。 并且不四舍五入
t.toFixed(2)是四舍五入的?不想得到小数点后substring取。有什么好办法。谢谢
不知道api有没有类似的方法
但是如果没有可以用笨一点的方法
当成字符串然后再来操作 用正则表达式
function FormatNumber(srcStr,nAfterDot) //nAfterDot小数位数
{
var srcStr,nAfterDot;
var resultStr,nTen;
srcStr = ""+srcStr+"";
strLen = srcStr.length;
dotPos = srcStr.indexOf(".",0);
if (dotPos == -1){
resultStr = srcStr+".";
for (i=0;i<nAfterDot;i++){
resultStr = resultStr+"0";
}
return resultStr;
}
else{
if ((strLen - dotPos - 1) >= nAfterDot){
nAfter = dotPos + nAfterDot + 1;
nTen =1;
for(j=0;j<nAfterDot;j++){
nTen = nTen*10;
}
resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;
return resultStr;
}
else{
resultStr = srcStr;
for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){
resultStr = resultStr+"0";
}
return resultStr;
}
}
}
var num = 136589.32658+"";
var index = num.indexOf(".");
var result = num.substring(0,index+3);
<script language="javascript">
var a=123.456
var b=parseInt(a*100,10)/100
alert(b);
</script>
* js乘法:两个浮点数的乘积会出现误差,这个函数返回较为精确的结果。(不一定是绝对准确)
*/
function Multiplication(arg1,arg2){
var m=0; //扩大后的两数相乘比初始值相乘扩大的倍数
var s1=arg1.toString();
var s2=arg2.toString();
try{
//获取第一个参数的小数部分长度,去掉小数点后,小数部分的长度就是初始值的小数点右移的位数
m+=s1.split(".")[1].length;
}catch(e){
}
try{
////获取第二个参数的小数部分长度,去掉小数点后,小数部分的长度就是初始值的小数点右移的位数
m+=s2.split(".")[1].length;
}catch(e){
}
//返回值:将参数的小数点去掉然后相乘,最后除以Mah.pow(10,m)
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10,m) ;
}
竟然不是6532.js真是精深