在c#中将字符串转换为long时的问题

Posted

技术标签:

【中文标题】在c#中将字符串转换为long时的问题【英文标题】:Issue when converting string to long in c# 【发布时间】:2022-01-16 14:36:01 【问题描述】:

我想将字符串转换为 Long。但是我收到了这个错误:

输入的字符串格式不正确

如何在 C# 中将字符串转换为长字符串?

我关注这个答案How could I convert data from string to long in c#

这是我的代码:

if (Convert.ToInt64("140.82") >= minPrice && 
    Convert.ToInt64(217.76) <= maxPrice) 

    // do filter
  // on this line the exception is thrown

我犯了什么错误?

【问题讨论】:

请注意,该问题的最高投票答案实际上是错误的,并且会给您该错误。 既然您在代码中输入值,为什么不将它们输入为十进制而不是字符串(在 217.76 的情况下输入其他内容)? 【参考方案1】:

您不能在 C# 中将“140.82”转换为长值。您可以将“140.82”转换为double,然后再转换为long。

(long)double.Parse("140.82")

【讨论】:

【参考方案2】:

您正在将字符串转换为整数,而不是长整数。 Convert.ToInt64() 函数无法将字符串的小数转换为 int,因为这需要截断。而是尝试 Double.TryParse(),然后将其转换为整数。要删除小数,以便在将其转换为双精度后将其转换为 int,请使用 Math.Floor()、Math.Ceiling()、Math.Round() 或 Math.Truncate()。

【讨论】:

嗯,long 是一个整数,但是是的,问题是十进制值。【参考方案3】:

如果你打算使用Convert.ToInt64(param)方法将字符串数据转换为long,期望当前数据格式应该符合目标数据格式。如果要使用Convert.ToInt64()方法,字符串数据必须是长格式。

int minPrice = 100;

if(minPrice <= Convert.ToInt64("140"))

    Console.WriteLine("Value: 0", Convert.ToInt64("140"));

如果您确定字符串是浮点格式,另一种方法是使用Convert.ToDouble() 方法:

int minPrice = 100;

if(minPrice <= (long)Convert.ToDouble("140.82"))

    Console.WriteLine("Value: 0", Convert.ToDouble("140.82"));

【讨论】:

以上是关于在c#中将字符串转换为long时的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在java中将十六进制字符串转换为long?

如何在C#中将字符串转换为整数

在Java中将DOM Document转换为ByteArrayOutputStream时的字符编码问题

在 C# 中将字符串转换为字节数组

如何在c#中将ArrayList转换为字符串数组(字符串[])

如何在 C# 中将字符串转换为 DateTime?