将字符串十进制转换为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