从List <float>转换为int </float>

时间:2012-04-09 20:30:06

标签: c# casting

任何人都可以告诉我是否可以这样做,如果可以,怎么做?

我有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];

5 个答案:

答案 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)

由于MainFocalLengthListList<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])