C#将格式化的字符串(31.2k)转换回数字(31240)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#将格式化的字符串(31.2k)转换回数字(31240),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1488字,纯文字阅读大概需要3分钟。
内容图文
假设我有以下代码:
int i = 31240;
string Number = ((double)i / 1000).ToString("0.#k");
我得到此结果作为数字的字符串:31,2k
现在,我想做相反的事情,那就是将这个字符串“ 31,2k”带回31240甚至31200,但是我不知道该怎么做…
任何想法?
有人说那是不可能的.
但是最后,我找到了实现目标的完美方法.我将解决方案发布给可能愿意知道的人.
使用很简单,它允许进行两种转换:
>千,例如:45831< => 45.8万< => 45831
>百万,例如:123852376< => 123,5m< => 123852376
解决方法:
int i = (int)(Double.Parse(Number.Substring(0, Number.Length - 1)) * 1000);
我们用Number.Substring(0,Number.Length-1)删除k,用Double.Parse将其转换为double,乘以1000,最后转换为int.事物的顺序非常重要!我第一次做(int)Double.Parse(Number.Substring(0,Number.Length-1))* 1000在乘法之前转换为int(所以我得到31000而不是31200)
我要补充一点,如果我不得不编写该代码,那么如果我使用Decimal.Parse而不是Double.Parse,我的睡眠会好得多(这样我就可以避免浮点数的变化)
我将添加一个更好的方法:
int i2 = int.Parse(Number.Substring(0, Number.Length - 1).Replace(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator, string.Empty)) * 100;
这更有趣.和其他方法一样,我们删除了k,但是这次我们也从字符串中删除了,然后乘以100.
有趣的技巧是,用一个空字符串代替,而不是简单地(用意大利语用意大利语说“ bovinamente”)替换一个空字符串,我们得到当前的十进制分隔符(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator),然后用一个空字符串.
显然,在组合原始字符串时是否使用了另一种区域性(例如,始终保持良好的CultureInfo.InvariantCulture),我们将使用该区域性来获取NumberDecimalSeparator
内容总结
以上是互联网集市为您收集整理的C#将格式化的字符串(31.2k)转换回数字(31240)全部内容,希望文章能够帮你解决C#将格式化的字符串(31.2k)转换回数字(31240)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。