首页 / 知识
在C#中使用泛型创建数学库
2023-04-15 09:49:00

Creating a Math library using Generics in C#是否有使用泛型创建不依赖于存储数据的基本类型的数学库的可行方法?
换句话说,假设我要编写一个Fraction类。 分数可以用两个整数或两个双精度数或其他形式表示。 重要的是基本的四个算术运算都已定义好。 因此,我希望能够编写 不幸的是,没有代表四个基本操作(+,-,*,/)的接口。 有没有人找到可行,可行的方法来实现这一目标? 这是一种相对简单的抽象操作员的方法。
如果无法实现所使用的类型,则将在运行时而不是编译时失败(这很糟糕)。
编辑:修复了 我相信这可以回答您的问题: http://www.codeproject.com/KB/cs/genericnumerics.aspx 这是泛型类型带来的一个细微问题。假设一个算法涉及除法,例如说用高斯消元法求解方程组。如果您输入整数,将会得到错误的答案,因为您将执行整数除法。但是,如果您传递的双参数发生时具有整数值,那么您将得到正确的答案。 和Cholesky分解一样,平方根也会发生同样的事情。分解整数矩阵会出错,而分解具有整数值的双精度矩阵会很好。 首先,您的类应将泛型参数限制为基元(公共类Fraction其中T:struct,new())。 其次,您可能需要创建隐式转换重载,以便您可以处理从一种类型到另一种类型的转换,而无需编译器哭泣。 第三,当合并不同类型的分数时,您也可以使四个基本运算符重载,以使接口更加灵活。 最后,您必须考虑如何处理上溢和下溢。一个好的库在处理溢出方面将非常明确。否则,您将无法相信不同分数类型的运算结果。 |
最新内容
相关内容
linux使用命令的方法?
linux使用命令的方法?,系统,信息,工具,标准,数据,命令,左下角,目录,文件夹,图标,linux的cd命令的使用方法1、cd ~:回到用户家目录。注:这得看你linux存储数据命令?
linux存储数据命令?,系统,管理,数据,设备,情况,地址,工作,命令,服务,平台,Linux文件系统操作命令1、cat:可以显示文件的内容(经常和more搭配使linux命令输入方法?
linux命令输入方法?,系统,电脑,密码,管理,地址,命令,网站,工具,首开,位置,linux终端输入~怎么弄中间在电脑上打开需要的Word文件进入。进入到文Python中什么是反射?使用方法有哪
Python中什么是反射?使用方法有哪些?,信息,培训,状态,术语,检测,反射,属性,对象,字符串,方法,反射这个术语在很多语言中都存在,并且存在大量的字典通过什么存储数据?
字典通过什么存储数据?,数据,分析,位置,字典,速度,利用率,特点,方式,空间,存储空间,在计算机科学中,字典是一种非常重要的数据结构,它能够以键值Python中有哪些方法可以解压文件?
Python中有哪些方法可以解压文件?,工具,系统,工作,培训,文件,文件夹,方法,窗体,不同于,以下内容,在Python学习和日常使用中,很容易造成文件过大Python列表类型list合并有哪些方法
Python列表类型list合并有哪些方法?,培训,方法,列表,可能会,数组,切片,下文,字符串,数据类型,请看,在Python编程语言中,有各种数据类型,比如字符零基础学习Python的四种方法
零基础学习Python的四种方法,基础,代码,基础知识,培训,发展,时间,知识,书籍,初学者,练习,近年来,随着移动互联网的发展,对Python人才的需求越来如何在Python中定义类方法和修改类
如何在Python中定义类方法和修改类属性?,代码,方法,培训,对象,实例,定义,结果,示例,赋值,属性,Python中的类还可定义使用@classmethod修饰的类提高Python 效率的 5 种高级方法
提高Python 效率的 5 种高级方法,代码,数字,函数,有限,设备,项目,工具,培训,列表,内存,任何编程语言的高级特征通常都是通过大量的使用经验才关于Python的高效学习方法
关于Python的高效学习方法,基础,培训,资料,质量,技术,系统,情况,学习方法,高效,初学者,今天给大家分享一下Python高效的学习方法,尽管每个人的学习python要注意的方法事项
学习python要注意的方法事项,代码,基础,环境,网络,时间,地方,分析,评论,人工智能,数据,python入门比较建议找一个视频课程,花一周时间快速过掉