将字符串转换为特定的十进制格

时间:2016-08-11 12:25:41

标签: c#

如何将长度为5的字符串转换为小数点格式为xx.xxx?

例如,字符串" 01000"到一个始终格式为01.000的小数?我实际上希望能够使用任何数字,例如" 19999"到小数为19.999。

5 个答案:

答案 0 :(得分:9)

如果您的要求是正确的(总是5位数,总是在第二位数后分开),您只需

class data(Structure):
    _fields_ = [('Status',POINTER(c_char))]

无需解析或子串。

如果您的问题实际上与字符串表示无关,但您希望将字符串input = "01000"; // or "19999" var result = input.Insert(2, "."); // "01.000" or "19.999" 转换为值"01000"的{​​{1}}(或double 1.0你可以简单地解析字符串:

19.999

答案 1 :(得分:1)

decimal myDecimal = Convert.ToDecimal("01000") / 1000;

这将提供字符串输入,输出格式始终相同。

答案 2 :(得分:0)

它必须保留一个字符串,而不是小数。您无法控制小数点的位置,如果将其转换为实际的decimal类型,则无法使用前导零。例如,如果您使用01000decimal转换为01.000,则会1.0

使用此:input.substring(0, 2) + "." + input.substring(2);

答案 3 :(得分:0)

假设您希望结果也是一个字符串,一个解决方案可能只是插入小数点:

var newString = String.Format("{0}.{1}", input.Substring(0, 2), input.SubString(2));

var newString = input.Insert(2, ".");

否则你的要求没有意义,因为数值不能有前导零(或小数点之后的尾随值)。他们只是一个数字。

根据您对问题的评论,此要求没有意义。相反,执行适当的划分。

var dec = Decimal.Parse(s);
var value = dec / 1000.0m;

答案 4 :(得分:0)

有点晚了,但你也可以使用Linq:

var x = String.Concat(
            input.Select(
                (c, i) => (i == 2) ? '.' + c.ToString() : c.ToString()
            )
        );