根据数字在字符串中的位置将数字从范围分配给字母
本文关键字:数字 范围 分配 位置 字符串 | 更新日期: 2023-09-27 18:14:04
我有一段代码,它应该均匀地将数字0-255分配给字符串中的字母。第一个字母应为0,最后一个字母应为255。然而,在我的代码中(很可能是由于将数字四舍五入的缘故),我得到的最大值是252这样的较低数字。这是我的代码:
string x = "abcde";
(255 / (x.Length - 1)) * x.IndexOf("e")
这个值应该是255
255 / (x.Length - 1)
是一个整型运算,因此你得到的255 / 4
是63
而不是63,75
。
你需要告诉编译器你想要一些浮点处理,通过将f
附加到你的第一个数字或.0
:
255.0 / (x.Length - 1)
或
255f / (x.Length - 1)
要解决这个问题,您需要像这样将一件事转换为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"))
测试:https://ideone.com/ePyo8J
LINQ
static IEnumerable<int> WordToIntList(string s)
{
return s.ToCharArray().ToList().Select((c, i) => (int) (255.0*(i))/(s.Length - 1));
}