当前位置: 首页 > news >正文

014集——浮点数值类型——C#学习笔记

浮点类型的特征
C# 支持以下预定义浮点类型:



double a = 12.3;
System.Double b = 12.3;
每个浮点类型的默认值都为零,0。 每个浮点类型都有 MinValue 和 MaxValue 常量,提供该类型的最小值和最大有限值。 float and double 类型还提供可表示非数字和无穷大值的常量。 例如,double 类型提供以下常量:Double.NaN、Double.NegativeInfinity 和 Double.PositiveInfinity。

当所需的精度由小数点右侧的位数决定时,decimal 类型是合适的。 此类数字通常用于财务应用程序、货币金额(例如 $1.00)、利率(例如 2.625%)等。 精确到只有一个小数的偶数用 decimal 类型处理会更准确:例如,0.1 可以由 decimal 实例精确表示,而没有精确表示 0.1 的 double 或 float 实例。 由于数值类型存在这种差异,因此当你对十进制数据使用 double 或 float 时,算术计算可能会出现意外的舍入错误。 当优化性能比确保准确度更重要时,可以使用 double 代替 decimal。 然而,除了大多数计算密集型应用程序之外,所有应用程序都不会注意到性能上的任何差异。 避免使用 decimal 的另一个可能原因是为了最大限度地降低存储需求。

可在表达式中将整型类型与 float 和 double 类型混合使用功能。 在这种情况下,整型类型隐式转换为其中一种浮点类型,且必要时,float 类型隐式转换为 double。 此表达式的计算方式如下:

如果表达式中有 double 类型,则表达式在关系比较和相等比较中求值得到 double 或 bool。
如果表达式中没有 double 类型,则表达式在关系比较和相等比较中求值得到 float 或 bool。
你还可在表达式中混合使用整型类型和 decimal 类型。 在这种情况下,整型类型隐式转换为 decimal 类型,并且表达式在关系比较和相等比较中求值得到 decimal 或 bool。

不能在表达式中将 decimal 类型与 float 和 double 类型混合使用。 在这种情况下,如果你想要执行算术运算、比较运算或相等运算,则必须将操作数显式转换为 decimal 或反向转换,如下例所示:

double a = 1.0;
decimal b = 2.1m;
Console.WriteLine(a + (double)b);
Console.WriteLine((decimal)a + b);

double d = 3D;
d = 4d;
d = 3.934_001;

float f = 3_000.5F;
f = 5.4f;

decimal myMoney = 3_000.5m;
myMoney = 400.75M;

示例代码如下:

using System;
using System.Globalization;namespace StringApplication
{class zz银行{protected decimal MyFortune = 0m;public zz银行(){/*m 后缀用于表示一个数值字面量是 decimal 类型的。decimal 类型用于需要高精度的财务和货币计算。* 它提供了比 float 和 double 类型更高的精度和更小的范围,非常适合处理金融数据。当你看到 0m 时,这意味着数字 0 被明确指定为 decimal 类型,而不是默认的 int、float 或 double 类型。这样做的好处是,你的代码意图更加清晰,同时也避免了在将整数或浮点数赋值给 decimal 变量时可能发生的隐式类型转换。*/MyFortune = 0m;}public void AddPenny(decimal i){MyFortune += i ;}//扩展或修改继承的方法、属性、索引器或事件的抽象或虚拟实现需要 override 修饰符。public override string ToString(){/*ToString 方法用于将数值、日期、时间等对象转换为它们的字符串表示形式。* 对于数值类型(如 decimal),ToString 方法可以接受一个格式字符串作为参数,以指定输出字符串的格式。*/var usFormat = new CultureInfo("en-US");//return " zz银行的余额为:" + MyFortune.ToString("C") ;¥人民币单位return " zz银行的余额为:" + MyFortune.ToString("C", usFormat); //$美元单位//return " zz银行的余额为:" + MyFortune.ToString("F5", usFormat); //$美元单位,保留5为小数,即F5/*关于 "C" 格式说明符:使用当前区域性的货币符号(如美元符号$、欧元符号€等)。根据需要添加千位分隔符。根据当前区域性的设置来格式化小数点后的数字(通常是两位,但这也取决于区域性的具体设置)。因此,如果 MyFortune 的值是 123.45m,并且当前线程的区域性设置为美国英语(en-US),那么 MyFortune.ToString("C") 将返回类似 "$123.45" 的字符串。如果当前线程的区域性设置为其他货币体系,返回的字符串将相应地反映该货币体系的格式。*/}public static void Main(){zz银行 bank = new zz银行();bank.AddPenny(2.666666m);Console.WriteLine(bank);Console.ReadLine();}}
}

 

在C#中,public override string ToString() 这句代码定义了一个方法(Method),这个方法重写了(Overrides)从基类继承而来的 ToString 方法。这里有几个关键点需要理解:

public:这是一个访问修饰符,表示这个方法是公开的,意味着它可以被任何其他类访问。
override:这个关键字用于指示该方法重写了基类中的虚方法(virtual method)或抽象方法(abstract method)。如果没有 override 关键字,并且基类中没有相应的虚方法或抽象方法,那么尝试定义这样一个方法将会导致编译错误。
string:这是方法的返回类型,表示该方法执行后将返回一个字符串(String)类型的值。
ToString:这是方法的名称。ToString 方法在.NET中是一个非常特殊的方法,因为几乎所有.NET对象都继承自 System.Object 类,而 System.Object 类中定义了一个 virtual 的 ToString 方法。这意味着,除非在派生类中重写 ToString 方法,否则调用任何对象的 ToString 方法时,都会返回该对象的类名加上其哈希码的字符串表示(这通常不是很有用)。
方法体(在您的例子中未给出):这是方法内部执行的代码,定义了当调用该方法时应该执行什么操作。对于 ToString 方法来说,通常的做法是返回一个能够描述对象状态的字符串。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • yarn的淘宝镜像
  • 【代码随想录】有序数组的平方
  • 迪米特法则(LoD)
  • Python 爬取网页水务数据并实现智慧水务前端可视化
  • Linux的常用操作-02
  • 学懂C++(二十二):高级教程——深入理解 C++ 多线程基础理论和概念
  • RAG私域问答场景超级详细方案(第一期方案)[1]:工业级别构建私域问答(知识处理、知识召回排序、搜索问答模块)
  • 算法基础知识——核函数
  • #java学习笔记(面向对象)----(未完结)
  • 非范型ArrayList和泛型List<T>
  • Service服务在Android中的使用
  • UDP双向通信
  • SQL注入实例(sqli-labs/less-17)
  • CMake,Makefile,CMakeLists.txt的关系和作用
  • 10分钟学会Docker的安装和使用
  • 【5+】跨webview多页面 触发事件(二)
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • AngularJS指令开发(1)——参数详解
  • Bytom交易说明(账户管理模式)
  • ComponentOne 2017 V2版本正式发布
  • ES10 特性的完整指南
  • gf框架之分页模块(五) - 自定义分页
  • JavaScript DOM 10 - 滚动
  • JavaScript对象详解
  • js数组之filter
  • Redis中的lru算法实现
  • sessionStorage和localStorage
  • Swoft 源码剖析 - 代码自动更新机制
  • 分布式熔断降级平台aegis
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前端路由实现-history
  • 前嗅ForeSpider采集配置界面介绍
  • 译有关态射的一切
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • (02)vite环境变量配置
  • (9)STL算法之逆转旋转
  • (python)数据结构---字典
  • (八)Spring源码解析:Spring MVC
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二)springcloud实战之config配置中心
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (力扣)循环队列的实现与详解(C语言)
  • (十六)视图变换 正交投影 透视投影
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (学习总结16)C++模版2
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转载)(官方)UE4--图像编程----着色器开发
  • .net core 6 集成和使用 mongodb
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET IoC 容器(三)Autofac
  • .Net Web窗口页属性
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .stream().map与.stream().flatMap的使用