从 List 转换为 int

本文关键字:转换 int float List | 更新日期: 2023-09-27 18:30:44

谁能告诉我这是否可以做到,如果是,如何做到?

我有一个List<float> FocalLengthList,我用一些值填充了它。然后此列表存储在List<List<float>> MainFocalLenghtList中。但是,在我的应用程序中,我需要使用 MainFocalLenghtList 中的值来更新对象的 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];

从 List<float> 转换为 int

你当然可以对intfloat,只要你明确地这样做(因为它可能涉及精度损失)。

发布的代码的问题在于您正在索引到其他列表的列表MainFocallengthList[0]返回的值本身就是一个List<float>。然后,您必须索引到列表中,以获取实际可以转换为 int 的值。

假设目标列表和该列表中的目标浮点数都位于其各自容器的第一个索引处:

int zComponent = (int)MainFocalLengthList[0][0];

第一个索引返回您添加到MainFocalLengthListFocalLengthList。第二个索引返回您添加到 FocalLengthListnewFocalLength 值。清楚?:)

我可能会这样做:

int zComponent = (int)Math.Ceiling(MainFocallengthList[m][n]);

尽管您需要将第 mFocalLengthList中的第 n替换为实际值。

试一试:

var floatList = new List<float>();
var intList = floatList.Select(f => (int)Math.Ceiling(f)).ToList();

因为MainFocalLengthList是一个List<float>列表

var intarr = Array.ConvertAll(MainFocalLengthList[0].ToArray(), f=>(int)f);

你可以这样做,但你需要内部和外部列表的索引:

// 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])