怎么判断一个object是不是数字

shenlang 2007-12-05 02:14:53
这个object可能是int, long, float, double......等,有没有一句话可以判断出它是数字
例如在java中是这样的:if( object instanceOf Number ) ......
另外,如何将数字按照指定的格式串格式化成一个字符串?如###,###.#0
...全文
2720 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
tepc2000 2007-12-05
  • 打赏
  • 举报
回复
mark
zxkid 2007-12-05
  • 打赏
  • 举报
回复
其实只要这样: 判断这个object能否转换为decimal, 可以说明是数字, 否则不是
所以9楼的代码 可以简化为
public static bool IsNumeric(object AObject)
{
return (AObject as decimal) != null;
}

个人观点 不一点正确呵呵
GentleCat 2007-12-05
  • 打赏
  • 举报
回复
呵呵,楼上的方法是比较常用的,硬来不行那就不是数字了呗~  
lovvver 2007-12-05
  • 打赏
  • 举报
回复
object obj = "xxx";
try
{
Convert.ToDecimal(obj);
return true;
}
catch(Exception)
{
return false ;
}
dangnilaoqu 2007-12-05
  • 打赏
  • 举报
回复

object str="3343ffff";
string newstr = str.ToString();
for (int i = 0; i<newstr .Length;i++ )
{
if (char.IsNumber(newstr , i))
{
--是数字类型!;
return;
}
else
{
--不是数字类型!;
return;
}

}

王集鹄 2007-12-05
  • 打赏
  • 举报
回复
一个个的判断也不是很复杂,毕竟数字类型是有限的
public static bool IsNumeric(object AObject)
{
return AObject is sbyte || AObject is byte ||
AObject is short || AObject is ushort ||
AObject is int || AObject is uint ||
AObject is long || AObject is ulong ||
AObject is double || AObject is char ||
AObject is decimal || AObject is float ||
AObject is double;
}
shenlang 2007-12-05
  • 打赏
  • 举报
回复
但是当object="123"时,它是字符串对象,不应该是数字
jinjazz 2007-12-05
  • 打赏
  • 举报
回复
public static bool IsNumeric(object Expression)
{
bool isNum;
double retNum;
isNum = Double.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum);
return isNum;
}
wuyi8808 2007-12-05
  • 打赏
  • 举报
回复
// 标准数字格式字符串用法说明及举例
class NumberFormat
{
static void Main()
{
// {index[,alignment][:format]}
// index - 从零开始的整数,指示对象列表中要格式化的元素。
// alignment - 可选整数,指示最小宽度,不足部分用空格填充。负数指示左对齐,正数指示右对齐。
// format - 格式字符串。标准数字格式字符串采取“Axx”形式,A为单个字母, 说明如下:
// c - 货币, xx指示小数位数
// d - 十进制, xx指示有效位数, 不足用零填充, 只能用于整数
// x - 十六进制, 用法同d
// e - 指数, xx指示小数位数
// f - 固定点, xx指示小数位数
// n - 数字, 输出千位分隔符, 其余同f
// g - 常规, xx指示有效位数, 使用e或f中较短者
// p - 百分比, xx指示小数位数
// 例如以下语句的输出为: "|¥-5.00|-05| -05|-5.0 |-500%|12345.7|12,345.7|"
System.Console.WriteLine("|{0:c}|{0:d2}|{0,4:d2}|{0,-5:f1}|{0:p0}|{1:f1}|{1:n1}|", -5, 12345.67);
}
}
xh831213 2007-12-05
  • 打赏
  • 举报
回复
没有一句话的判断,不过可以使用自定义函数

public bool isNumeric(string inString)
{
inString=inString.Trim();
bool haveNumber=false;
bool haveDot=false;
for(int i=0;i<inString.Length;i++)
{
if (Char.IsNumber(inString[i]))
{
haveNumber=true;
}
else if(inString[i].ToString() == ".")
{
if (haveDot)
{
return false;
}
else
{
haveDot=true;
}
}
else if(i==0)
{
if(inString[i].ToString() !="+" && inString[i].ToString() != "-")
{
return false;
}
}
else
{
return false;
}
if(i>20)
{
return false;
}
}
return haveNumber;
}
vrhero 2007-12-05
  • 打赏
  • 举报
回复
1.double.TryParse(s,out result)

参数
s
包含要转换的数字的字符串。

result
当此方法返回时,如果转换成功,则包含与s参数等效的双精度浮点数;如果转换失败,则包含零。如果s参数为空引用,不是格式有效的数字或者表示的数字小于MinValue或大于MaxValue,则转换将失败。该参数未经初始化即被传递。

返回值
如果s转换成功,则为true;否则为false。

2.result.ToString("###,###.#0")

使用指定的格式,将此实例的数值转换为它的等效字符串表示形式。
wuyi8808 2007-12-05
  • 打赏
  • 举报
回复
(123456.7891).ToString("N2");
wuyi8808 2007-12-05
  • 打赏
  • 举报
回复
int.TryParse()
albb52 2007-12-05
  • 打赏
  • 举报
回复
没有

111,112

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧