首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在.NET中,如何将"0.000“转换为”long“?

在.NET中,如何将"0.000“转换为”long“?
EN

Stack Overflow用户
提问于 2010-06-08 19:41:53
回答 5查看 1.8K关注 0票数 2

我有一个字符串,"0.000“(或任何类似的字符串),我想要将其转换为长字符串。我很乐意去掉小数点后的任何东西。

做这件事最好的方法是什么?

我可以先转换为double,然后再转换为long,但我只是想知道是否有更简单的方法。以下所有语句都会抛出异常:

代码语言:javascript
代码运行次数:0
运行
复制
long l3 = Convert.ToInt64(nrToConvert);

long l1;
long.TryParse(nrToConvert, out l1);

long l2 = long.Parse(nrToConvert);
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-06-08 19:52:42

通常,在解析字符串值时,我会首先将其解析为它所表示的类型。所以在本例中,将其解析为double,因为它是double。是的,我写的是解析,而不是故意转换。在解析字符串时,有很多地方会出错,所以一定要为解析失败做好准备!它几乎肯定会在某一时刻出现。

代码语言:javascript
代码运行次数:0
运行
复制
double val;
if(double.TryParse(nrToConvert,out val))
{
  //yous should validate that the value is within the expected range as well
  return (long)val;
}
else
{
  //do some error handling;
}
票数 5
EN

Stack Overflow用户

发布于 2010-06-08 20:06:24

只要分数为零,就可以通过告诉小数点是可接受的来解析这些字符串:

代码语言:javascript
代码运行次数:0
运行
复制
        long value = long.Parse("0.000", System.Globalization.NumberStyles.AllowDecimalPoint);

但是,它不会为您截断或舍入数字,非零分数会抛出异常(或使TryParse失败)。您需要显式应用所需的截断类型:

代码语言:javascript
代码运行次数:0
运行
复制
        long value = (long)decimal.Parse("1.500");

或者使用Math.Round、Truncate、Ceiling。请注意,从技术上讲,您不应该使用double.Parse(),长整型的数字太多,无法用double精确表示(19,double仅支持15个有效数字)。

票数 3
EN

Stack Overflow用户

发布于 2010-06-08 19:50:56

你有没有尝试过链接这个链接:

代码语言:javascript
代码运行次数:0
运行
复制
(long)Math.Round(double.Parse("1.234"));

当然,您应该首先使用TryParse,但这应该可以让您开始使用它。

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

https://stackoverflow.com/questions/2996920

复制
相关文章

相似问题

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