取某个位置的小数,啊,在我看来应该是这样:
int get_one_digit(double num,int n)
{
int a,b;
for(;n!=0;n--,num=num*10);
b=num;
a=b%10;
return a;
}
这是我编的第一个,我所想的是先把这个数到想取的小数之前所有数都化为整数,然后再把它后面的小数用换整形的法子去掉,最后用%取余就行了。
不过问题是我得到的答案是-8。我觉得可能是数太大没法算了。然后我试着这样:
int get_one_digit(double num,int n)
{
long long int a,b;
for(;n!=0;n--,num=num*10);
b=num;
a=b%10;
return a;
}
结果是正确的,但OJ上是超时的,也就是说这不是一个好主意(我还觉得这样挺短的挺不错呢),所以我决定每乘一次就把整数去掉,说不定会好一点
于是:
int get_one_digit(double num,int n)
{
int a;
for(;n!=0;n--,num=num*10)
num=num-(int)num;
a=num;
return a;
}
显然更短了,但我还是不知道,我害怕还会超过时限……好吧,果然,又超了……
我没有用long型,这个也并不复杂啊,为什么会超时间呢?
放弃了,用老师的吧,至少在这里我是搞不懂咋回事了。
哦,好吧,我没有看清题意哎,原来还可以取整数部分,但我这个取整数会很麻烦,怪不得会超时限。只能呵呵了……