我有一段代码,应该将数字0-255均匀地分配给字符串中的字母。第一个lettter应该是0而最后一个应该是255.但是,使用我的代码(很可能是由于将数字舍入到某处),我得到的数字更低,如最大252。这是我的代码:
string x = "abcde";
(255 / (x.Length - 1)) * x.IndexOf("e")
这应该给出255
答案 0 :(得分:2)
255 / (x.Length - 1)
是一个整数操作,因此255 / 4
为63
而不是63,75
。
您需要通过将f
附加到第一个号码或.0
来告诉编译器您需要进行浮点处理:
255.0 / (x.Length - 1)
或
255f / (x.Length - 1)
答案 1 :(得分:0)
要解决此问题,您需要向double
投一件事:
(int)((255 / (double)(x.Length - 1)) * x.IndexOf("e"))
或
(int)((255d / (x.Length - 1)) * x.IndexOf("e"))
或
(int)((255.0 / (x.Length - 1)) * x.IndexOf("e"))
答案 2 :(得分:0)
LINQ
static IEnumerable<int> WordToIntList(string s)
{
return s.ToCharArray().ToList().Select((c, i) => (int) (255.0*(i))/(s.Length - 1));
}