gpt4 book ai didi

C# 将格式化字符串 (31.2k) 转换回数字 (31240)

转载 作者:行者123 更新时间:2023-11-30 15:42:10 25 4
gpt4 key购买 nike

假设我有这段代码:

int i = 31240;
string Number = ((double)i / 1000).ToString("0.#k");

我得到这个结果作为数字的字符串:31,2k

现在,我想做完全相反的事情,即将这个字符串“31,2k”取回 31240 甚至 31200,但我不知道该怎么做...有什么想法吗?


有人说那是不可能的。但是最后我找到了实现目标的完美方法。我为那些愿意知道的人发布了解决方案。使用简单,它允许进行 2 种转换:

  • 千,示例:45831 <=> 45,8k <=> 45831
  • 百万,示例:123852376 <=> 123,5m <=> 123852376

最佳答案

int i = (int)(Double.Parse(Number.Substring(0, Number.Length - 1)) * 1000);

我们删除了 kNumber.Substring(0, Number.Length - 1) , 用 Double.Parse 将其转换为两倍, 乘以 1000 最后转换为 int .东西的顺序很重要!我第一次做(int)Double.Parse(Number.Substring(0, Number.Length - 1)) * 1000在乘法之前转换为 int(所以我得到 31000 而不是 31200)

我要补充一点,如果我必须编写该代码,如果我使用 Decimal.Parse,我会睡得更好。而不是 Double.Parse (所以我肯定会反对 float 的变幻莫测)

我会添加一个更好的方法:

int i2 = int.Parse(Number.Substring(0, Number.Length - 1).Replace(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator, string.Empty)) * 100;

这更有趣。我们删除了 k与其他方法一样,但这次我们删除了 ,来自 string也是,我们乘以 100。

有趣的技巧是,而不是简单地(意大利俚语中的“bovinamente”,就像牛一样)替换 ,使用空字符串,我们得到当前的小数点分隔符 ( CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator ) 并将其替换为空字符串。

很明显,如果我们在组成原始字符串时使用了另一种文化(例如总是好的 CultureInfo.InvariantCulture ),我们将使用它来获得 NumberDecimalSeparator

关于C# 将格式化字符串 (31.2k) 转换回数字 (31240),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7746402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com