首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.net中获取数字的大小?

如何在.net中获取数字的大小?
EN

Stack Overflow用户
提问于 2011-07-29 04:05:49
回答 5查看 7.2K关注 0票数 4

我想让一个给定的双精度数返回它的"size“(称为| number |,也就是点后面没有数字的位数),例如:

代码语言:javascript
复制
12.324654 -> 2
12 -> 2
0.99 -> 0
1.01 -> 1
901 -> 3
-0.99 -> 0
-9.999 -> 1

一定有一个我不熟悉的.net函数可以做到这一点..

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-07-29 04:10:08

代码语言:javascript
复制
((int)Math.Abs(12.324654)).ToString().Length

Math.Abs将转换为正数(不想计算负号)

(int)将丢弃小数点后面的数字

ToString()转换为字符串===> "12“

Length会告诉您有多少个字符

在边缘情况下,(int)( some number ) == 0的长度是1--您可能不想要这样的长度,所以要注意这种可能性

现在,你可以做的就是让它成为一个扩展方法……

代码语言:javascript
复制
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;
票数 6
EN

Stack Overflow用户

发布于 2011-07-29 04:16:09

您可以执行如下操作来说明返回零长度的0数字

代码语言:javascript
复制
private static int CountAbsoluteDigits(double p) {
    int absolute = (int)Math.Abs(p);
    if (0 == absolute)
        return 0;
    else
        return absolute.ToString().Length;
}

..。

代码语言:javascript
复制
var length = CountAbsoluteDigits(12.324654);

这是我用你提供的数字得到的输出。

12.324654 -> 2

12 -> 2

0.99 -> 0

1.01 -> 1

901 -> 3

-0.99 -> 0

-9.999 -> 1

票数 2
EN

Stack Overflow用户

发布于 2011-07-29 04:20:34

窃取Quintin的格式:

代码语言:javascript
复制
private static int CountAbsoluteDigits(double p) {
    int ip = (int)p;
    int answer = 0;
    while (ip!=0) {
        answer++;
        ip/=10;
    }
    return answer;
}

这不需要技巧(例如,abs()if)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6864991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档