如何将长度为5的字符串转换为小数点格式为xx.xxx?
例如,字符串" 01000"到一个始终格式为01.000的小数?我实际上希望能够使用任何数字,例如" 19999"到小数为19.999。
答案 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
类型,则无法使用前导零。例如,如果您使用01000
将decimal
转换为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()
)
);