任何人都可以告诉我是否可以这样做,如果可以,怎么做?
我有List<float> FocalLengthList
我填充了一些值。然后,此列表存储在List<List<float>> MainFocalLenghtList
中。
但是,在我的应用程序中,我需要使用fromMainFocalLenghtList中的值来更新对象的3D位置。所以我需要将fromMainFocalLenghtList [0]
投射到int
。
可以这样做吗?
这是我的代码的一小部分要解释。
将值添加到FocalLengthList,然后将该列表添加到List<List<float>> MainFocalLenghtList
float newFocalLength = focalLength * pixelSize;
FocalLengthList.Add(newFocalLength);
MainFocallengthList.Add(FocalLengthList);
FocalLengthList = new List<float>();
然后我打算如何使用这些值(不工作)
int zComponent = MainFocallengthList[0];
答案 0 :(得分:3)
您可以将float
投射到int
,只要您明确这样做(因为它可能会导致精度损失)。
您发布的代码存在的问题是您正在索引其他列表的列表。 MainFocallengthList[0]
返回的值本身就是List<float>
。然后,您必须索引到那个列表,以获得可以实际转换为int的值。
假设目标列表和列表中的目标float 都位于各自容器的第一个索引处:
int zComponent = (int)MainFocalLengthList[0][0];
第一个索引会返回您添加到FocalLengthList
的{{1}}。第二个索引返回您添加到MainFocalLengthList
的{{1}}值。明确? :)
答案 1 :(得分:1)
我可能会这样做:
int zComponent = (int)Math.Ceiling(MainFocallengthList[m][n]);
虽然您想要替换 m th {中 n th 项的实际值。 {1}}。
答案 2 :(得分:1)
试一试:
var floatList = new List<float>();
var intList = floatList.Select(f => (int)Math.Ceiling(f)).ToList();
答案 3 :(得分:1)
由于MainFocalLengthList
是List<float>
var intarr = Array.ConvertAll(MainFocalLengthList[0].ToArray(), f=>(int)f);
答案 4 :(得分:0)
你可以这样做,但你需要内部和外部列表的索引:
// The first [0] indicates the index of the nested list within MainFocallengthList
// The second [0] indicates the index of the item that you want in the nested list
int zComponent = (int)(MainFocallengthList[0][0])