Function F#读取文件、拆分字符串列表、汇总数据、非浮小数

Function F#读取文件、拆分字符串列表、汇总数据、非浮小数,function,f#,split,Function,F#,Split,我是F#的新手,被指派创建一个非常简单的银行代表。 我不想要任何与问题直接相关的代码答案,但更喜欢在哪里找到解决方案或如何找到解决方案的链接或提示 问题如下: 读取文件的行(一行看起来像:“1261450011500.00”及其序列号、账号、金额) 拆分行以使用行中的数据 汇总数据(返回银行账户余额) 由于舍入误差(?),未使用表示金额的浮点数 在一个函数中执行所有这些操作 我知道如何在函数中读取文件。 我还知道如何拆分字符串。 我知道如何从列表中递归地添加值 我不知道如何添加没有浮点变量的

我是F#的新手,被指派创建一个非常简单的银行代表。 我不想要任何与问题直接相关的代码答案,但更喜欢在哪里找到解决方案或如何找到解决方案的链接或提示

问题如下:

  • 读取文件的行(一行看起来像:“1261450011500.00”及其序列号、账号、金额)
  • 拆分行以使用行中的数据
  • 汇总数据(返回银行账户余额)
  • 由于舍入误差(?),未使用表示金额的浮点数
  • 在一个函数中执行所有这些操作
我知道如何在函数中读取文件。
我还知道如何拆分字符串。
我知道如何从列表中递归地添加值

我不知道如何添加没有浮点变量的十进制值。
我不知道如何从函数中的列表中检索字符串并将其拆分。
我不知道如何在函数中做所有这些事情,包括文件名、帐号和帐户货币

该函数应在处理文件中的事务后返回余额

我解决这个问题的想法是创建一个具有三个变量序列号、账号和金额的数据类型,然后执行以下操作:
读取文件,
拆分数据并为文件中的每一行创建自定义类型的对象
从类型中添加和删除值,并返回最终余额


如果有人能为我指出每个或任何问题的正确方向,我将非常感激

.NET包含一个名为
System.Decimal
的类型,它确实比典型的浮点类型更适合存储财务数据。在F#中,您可以使用
decimal
函数将不同类型的值(例如字符串)转换为
系统。decimal
(它F#缩写为一种类型,也称为
decimal
):
让d=decimal“1.23”
您还可以使用
M
后缀:
让d'=1.23M
,直接创建这些值,但对你来说,这似乎并不重要


关于其他问题,如果使用
System.IO.File.ReadLines
,则可以按顺序获取文件的各行。然后,您可以将该序列上的一系列操作组合在一起,以获得所需的结果。例如,您可以按顺序使用
Seq.map
拆分每一行(如果需要,可以转换为特定数据类型的实例),然后使用
Seq.groupBy
按账号对交易进行分组,然后再次使用
Seq.map
将汇总逻辑应用于每个组。如果有任何不清楚的地方,请询问后续问题。

您的数据看起来像
CSV
。看一看,我通过了作业,但我被告知要学习这样的类型是如何存储在内存中的。我知道整数是用位序列精确地存储的,但浮点数就是以指数序列的形式存储在内存中的。我不知道我说的是否完全正确,但尽管如此,你能告诉我十进制的表示法与浮点有什么不同吗?如果没有,它们是如何存储的。内存中的浮点数表示不精确,因为二进制中没有可以定义某些数字的指数?如有任何澄清,将不胜感激。谢谢@PontusMagnusson-查看页面上的备注。基本上,小数是浮点数,但使用的是以10为基数的数字,而不是以2为基数的数字(但请阅读我引用的那一页了解全部细节)。