c# - c# foreach 遍历对象并保存浮点数组
问题描述
我是 C# 编程的新手。我搜索了几个小时,但找不到解决方案,或者我不明白如何解决这个问题。我从数据集中反序列化了对象。我的对象具有特定的交易价值,例如开盘高低收盘。我想遍历我的对象并在浮点数组中获取一些值。数组应该看起来像这样 float[] rsi14 ={ 7520.5, 7535.0, 7530.5, ...}
像这样:
deserialziedObjectRsi[0].open + desirializedObjectRsi[1].open + ... to array.
这些值已经来自 float 类型。
我想要这个循环,所以我不必写 50 次或更多。
这是我尝试过的一些代码:
var deserializedObjectRsi =
JsonConvert.DeserializeObject<List<HistoricPricesRsi>>(stochDataRSI);
List<float> RsiClose = new List<float>();
RsiClose.Add(deserializedObjectRsi[0].close);
RsiClose.Add(deserializedObjectRsi[1].close);
RsiClose.Add(deserializedObjectRsi[2].close);
RsiClose.Add(deserializedObjectRsi[3].close);
RsiClose.Add(deserializedObjectRsi[4].close);
RsiClose.Add(deserializedObjectRsi[5].close);
RsiClose.Add(deserializedObjectRsi[6].close);
RsiClose.Add(deserializedObjectRsi[7].close);
RsiClose.Add(deserializedObjectRsi[8].close);
RsiClose.Add(deserializedObjectRsi[9].close);
RsiClose.Add(deserializedObjectRsi[10].close);
RsiClose.Add(deserializedObjectRsi[11].close);
RsiClose.Add(deserializedObjectRsi[12].close);
RsiClose.Add(deserializedObjectRsi[13].close);
float[] arrRSI14 = RsiClose.ToArray();
解决方案
您可以使用LINQ以声明方式为您处理数据。其中会有一个隐含的循环。
var arrRSI14 = deserializedObjectRsi.Select(x => Convert.ToSingle(x.Close)).ToArray();
所做的是,对于 中的每个值(表示为x
,但您可以使用任何有意义的名称)deserializedObjectRsi
,将其转换为单个值,并将结果放入数组中。关键字使编译器var
找出类型是什么;float[]
如果你真的想写,你可以写。
在 C# 中,float
关键字是 .NET FrameworkSingle
类型的别名(有关详细信息,请参阅C# Float 与 VB.net Single - Namin'抱怨'),这就是显示的 .NET Convert 方法使用 ToSingle 而不是 ToFloat 的原因。
我想对所使用的数据类型添加一点说明:对于货币数据来说,Single 或浮点数通常是一个糟糕的选择,因为它的精度足够小,如果在计算中使用它们会很快累积明显的错误。当数字在幕后不近似为二进制分数很重要时,我建议使用 Decimal 类型,例如十进制中的 0.1 是重复出现的二进制分数并且不能精确地表示为 Single 或 Double。
阅读资料:每个计算机科学家都应该知道的关于浮点运算的知识。
推荐阅读
- vue.js - 使用 vue-test-utils 测试两个不同的点击事件
- python - 如何从熊猫列名中去除撇号
- python - 使用openpyxl模块在python中取消合并_cell
- r - 从 Rmarkdown 创建的 Beamer 幻灯片的降价表对齐
- jetty - 码头升级8到9
- flutter - Flutter:让小部件保持活动状态(streambuilder)
- arrays - 在特定的多维 mongoDb 集合上推送对象
- intellij-idea - 如何在 IntellijIdea 插件中注册 AndroidLintInspectionBase
- c# - 在视图中显示来自多层 .tiff 的图像对象
- .net-core - ASP.NET Core Identity - 帐户控制器和文件夹在哪里