Csharp/C#教程:将字符串十进制转换为int分享


将字符串十进制转换为int

我有一个字符串“246246.246”,我想传递给IConvertable接口,ToInt16,ToInt32,ToIn64。 将带小数位的字符串解析为整数的最佳方法是什么?

这是一个解决方案,但有更好的解决方案吗?

string value = "34690.42724"; Convert.ToInt64(Convert.ToDouble(value)); 

要做到这一点折扣舍入,你可以这样做:

 Convert.ToInt64(Math.Floor(Convert.ToDouble(value))); 

如果你需要舍入,你可以用Math.Floor替换Math.Round

编辑:由于您在评论中提到您将进行四舍五入:

 Convert.ToInt64(Math.Round(Convert.ToDouble(value))); 

如果你不得不担心本地化/全球化,那么@xls说你应该在转换中应用CultureInfo。

编辑2:使用字符串函数的替代方法(不是非常优雅的IMO – 也许它可以通过谓词函数进行优化):

 Convert.ToInt64(value.Substring(0, value.IndexOf('.') > 0 ? value.IndexOf('.') : value.Length)); 

您不应该舍入值,因为ToInt64(double)已经返回舍入版本

  string value = "246246.246"; Convert.ToInt64(Convert.ToDouble(value)); 

如果你真的担心准确性而不是速度,那么十进制类型会更好。

 (long)Math.Round(decimal.Parse(value)); 

假设此字符串来自用户输入,您可能希望捕获数字样式。 通过可重用的function运行它,如此…

上述就是C#学习教程:将字符串十进制转换为int分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 int? ConvertToNumber(string value) { if (value == string.Empty) return null; try { var dec = decimal.Parse(value, NumberStyles.AllowDecimalPoint | NumberStyles.Number | NumberStyles.AllowThousands); return (int)Math.Round(dec); } catch (Exception ex) { Console.WriteLine("Please input a number."); return null; } } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/992683.html

(0)
上一篇 2021年12月23日
下一篇 2021年12月23日

精彩推荐