我想让一个给定的双精度数返回它的"size“(称为| number |,也就是点后面没有数字的位数),例如:
12.324654 -> 2
12 -> 2
0.99 -> 0
1.01 -> 1
901 -> 3
-0.99 -> 0
-9.999 -> 1一定有一个我不熟悉的.net函数可以做到这一点..
谢谢。
发布于 2011-07-29 04:10:08
((int)Math.Abs(12.324654)).ToString().LengthMath.Abs将转换为正数(不想计算负号)
(int)将丢弃小数点后面的数字
ToString()转换为字符串===> "12“
Length会告诉您有多少个字符
在边缘情况下,(int)( some number ) == 0的长度是1--您可能不想要这样的长度,所以要注意这种可能性
现在,你可以做的就是让它成为一个扩展方法……
public static class Utils
{
public static int Size(this double n)
{
int i = (int)Math.Abs(n);
if ( i == 0 ) return 0;
return i.ToString().Length;
}
}
12.324654.Size() == 2;发布于 2011-07-29 04:16:09
您可以执行如下操作来说明返回零长度的0数字
private static int CountAbsoluteDigits(double p) {
int absolute = (int)Math.Abs(p);
if (0 == absolute)
return 0;
else
return absolute.ToString().Length;
}..。
var length = CountAbsoluteDigits(12.324654);这是我用你提供的数字得到的输出。
12.324654 -> 2
12 -> 2
0.99 -> 0
1.01 -> 1
901 -> 3
-0.99 -> 0
-9.999 -> 1
发布于 2011-07-29 04:20:34
窃取Quintin的格式:
private static int CountAbsoluteDigits(double p) {
int ip = (int)p;
int answer = 0;
while (ip!=0) {
answer++;
ip/=10;
}
return answer;
}这不需要技巧(例如,abs()、if)。
https://stackoverflow.com/questions/6864991
复制相似问题