发新话题
打印

有没有更简便的方法取小数部分

有没有更简便的方法取小数部分

我好像记得有个更简便的AS代码能计算一个数的小数部分

比如说15.2446485
我要取得小数部分我就会用
a=15.2446485;
b=Math.ceil(a)-1;
c=a-b;
但得出来的C是0.2446485

有没有更直接点的办法得到小数前两位24

TOP

var a = 15.2446485;
var b = Math.floor(a);
var c = Math.floor((a - b) * 100) / 100;
trace(c);        // 0.24

TOP

var a=15.2446485;
var b=a.toString().split(".")[1].substr(0,2)
var c=Number(b)
trace(c)      //24

TOP

2,3楼的好象更复杂哦

TOP

怕複雜嗎?

var a = 15.2446485;
var b:Number = a.toString().slice(3, 5);
trace(b);
http://blog.zhu08.cn

TOP

哦,原来是转字符的方法,那请问你代码中的[1]是什么意思,看不懂

TOP

[1]是數組中的第二個元素
http://blog.zhu08.cn

TOP

引用:
原帖由 kamon 于 2007-1-13 00:06 发表
怕複雜嗎?

var a = 15.2446485;
var b:Number = a.toString().slice(3, 5);
trace(b);
那其实
var a=15.2446485;
var b=a.toString().substr(3,2);
trace(b);

这样也行吧

TOP

引用:
原帖由 willmasol 于 2007-1-13 00:11 发表



那其实
var a=15.2446485;
var b=a.toString().substr(3,2);
trace(b);

这样也行吧
看你要的結果是什麼!你這樣輸出來的b不是數字!是字符串!
http://blog.zhu08.cn

TOP

谢谢LS的同仁们,学到了...
开心

TOP

复制内容到剪贴板
代码:
var a = 15.2446485;

var b:Number = a.toString().slice(3, 5);

trace(typeof b);//string类型还是字符

trace(isNaN(b));//false又是数字
复制内容到剪贴板
代码:
var a:Number = 15.2446485;

var b:Number = a.toString().slice(3, 5);
大家不妨一试

[ 本帖最后由 tiana 于 2007-1-13 01:55 编辑 ]

TOP

复制内容到剪贴板
代码:
var a:Number = 15.2446485;
var b:Number = a.toString().slice(3, 5);
很显然,上面的公式使用了 2 个函数调用,而且参数 (3, 5) 还是人工确定的 ,

对于 var a:Number 为任意实数的情况 , 还是用
复制内容到剪贴板
代码:
var a=15.2446485;
var b=a.toString().split(".")[1].substr(0,2)
var c=Number(b)
trace(c)      //24
比较合适,它使用了 3 个函数调用和 1 个数组引用 ,

结果是上面 2 种方法都比楼主
复制内容到剪贴板
代码:
a=15.2446485;
b=Math.ceil(a)-1;
c=a-b;
这个公式慢 , 上面的公式使用了 1 个函数调用和 2 个减法运算

下面是我给出的公式:
复制内容到剪贴板
代码:
var a:Number = 15.2446485;
var b:Number = a-(a | 0);
trace(b) // 输出 0.2446485
适用于 var a:Number 为任意实数的情况 , 仅使用 1 个位或运算和 1 个减法运算

[ 本帖最后由 xionghuan 于 2007-1-13 20:32 编辑 ]
一种可能的回答,是因为某些我们无望理解的原因。

TOP

回复 #12 xionghuan 的帖子

你的方法我最看好!

总结一下各位的:
var a=15.987654321;
//取整数的方法
trace("1:"+(a | 0));
trace("2:"+Math.floor(a));
trace("3:"+(Math.ceil(a)-1));
trace("4:"+a.toString().split(".")[0]);
trace("5:"+a.toString().slice(0,a.toString().indexOf(".",0)));
//取小数的方法
trace("1:"+(a-(a | 0)));
trace("2:"+(a-Math.floor(a)));
trace("3:"+(a-Math.ceil(a)+1));
trace("4:"+"0."+a.toString().split(".")[1]);
trace("5:"+"0."+a.toString().slice(a.toString().indexOf(".",0)+1));
//注意字符串操作的方法得到的结果是字符串,只需Number()转换一下即可
var b:Number=Number("0."+a.toString().split(".")[1]);
trace(b);
向大家学习!

TOP

转换会带来误差!要注意哟。
向大家学习!

TOP

本来就是很简单的
不知道楼主想要简单到怎么样
用string 难道就简单了?
而且效率不高的

[ 本帖最后由 happyclub 于 2007-1-15 14:56 编辑 ]
努力学习 ING!!!

TOP

94
向大家学习!

TOP

var str="1234.78908765"
var myPattern1:RegExp=/\.\d+/
var myPattern2:RegExp=/\.\d{2}/
trace("0"+myPattern1.exec(str),String(myPattern2.exec(str)).substr(1))

//随便玩下~
寻觅终生伴侣!

my blog

TOP

用了正则表达式啊?
电脑里没有这个类。
向大家学习!

TOP

var a = 11111115.2446485;
var b:Number = Number(a.toString().slice(".", a.toString().length-a.toString().length-5));
trace(b);

学习了,哈哈

TOP

var a:Number=23.4435346;
var b=a.toString().substring(a.toString().indexOf(".")+1);

我也来插一脚。

还有一种更有意思的:
var a:Number=23.4435346;
var b:Number=a%1;
trace(b)
可以直接得到小数

TOP

回复 #20 tophy 的帖子

妙啊!
向大家学习!

TOP

引用:
原帖由 tophy 于 2007-1-18 09:06 发表
var a:Number=23.4435346;
var b=a.toString().substring(a.toString().indexOf(".")+1);

我也来插一脚。

还有一种更有意思的:
var a:Number=23.4435346;
var b:Number=a%1;
trace(b)
可以直接得到小数
:victory: 这个方法最实用!最简单!

TOP

引用:
原帖由 tophy 于 2007-1-18 09:06 发表
var a:Number=23.4435346;
var b=a.toString().substring(a.toString().indexOf(".")+1);

我也来插一脚。

还有一种更有意思的:
var a:Number=23.4435346;
var b:Number=a%1;
trace(b)
可以直接得到小数
他只要小数点后两位,你这个怎么确定?

TOP

ding

TOP

引用:
原帖由 willmasol 于 2007-1-13 00:32 发表
谢谢LS的同仁们,学到了...
开心
学习一下。。。。。。。谢谢

TOP

发新话题