C# 中的 Infinity 和 NaN

C#语言中,对于 int,long 和 decimal类型的数,任何数除以 0 所得的结果是无穷大,不在int,long 和 decimal 类型的范围之内,所以计算 6/0 之类的表达式会出错。

但是,double 和 float 类型实际上有一个可以表示无穷大的特殊值:5.0/0.0 = Infinity(无穷大),这个规则唯一的例外是0.0/0.0 = NaN (Not a Number)。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace Infinity_NaN
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. Console.WriteLine("5 / 2 = {0}", 5 / 2);            // 2
  12. Console.WriteLine("5.0 / 2.0 = {0}", 5.0 / 2.0);    // 2.5
  13. Console.WriteLine("5.0 / 2 = {0}", 5.0 / 2);        // 2.5
  14. Console.WriteLine("5 / 2.0 = {0}", 5 / 2.0);        // 2.5
  15. Console.WriteLine("5.0 / 0.0 = {0}", 5.0 / 0.0);    // Infinity
  16. Console.WriteLine("5.0 / 0 = {0}", 5.0 / 0);      // Infinity
  17. Console.WriteLine("0.0 / 0.0 = {0}", 0.0 / 0.0);    // NaN
  18. Console.WriteLine("5 / 0.0 = {0}", 5 / 0.0);        // Infinity
  19. Console.WriteLine("0.0 / 0 = {0}", 0.0 / 0);        // NaN
  20. //Console.WriteLine("5 / 0 = {0}", 5 / 0); // Err: Division by constant zero
  21. //Console.WriteLine("0 / 0 = {0}", 0 / 0); // Err: Division by constant zero
  22. // Infinity + 10 = Infinity
  23. // Infinity * 0 = 0
  24. // NaN + 10 = NaN
  25. // NaN * 0 = NaN
  26. }
  27. }
  28. }

运行后结果如下图所示:

时间: 2024-07-29 14:14:48

C# 中的 Infinity 和 NaN的相关文章

C#中的Infinity和NaN

C#中double和float类型有两个特殊值: Infinity(无穷大):5.0 / 0.0 = Infinity NaN(not a number):0.0 / 0.0 = NaN 计算表达式 0.0 / 0.0 = NaN, NaN和Infinity可以在表达式中使用: 10 + Infinity = Infinity 10 + NaN = NaN Infinity * 0 = 0 NaN * 0 = NaN

C#中的Infinity有个小坑

(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 昨天家里有事,上网也不方便,就没有推送文章.今天很累,也不长篇大论了.简单介绍一下最近遇到的一个小坑. 我们知道,在C#中主要有如下几种数值类型:int.long.decimal.float和double.对于前三种,如果除零,那么会提示表达式错误(直接书写数字)或报DivideByZeroException异常(使用变量):对于后面两种,除零会得到正负无穷大,除非你是0.0/0.0那么会得到NaN

移动端开发在iOS系统中 new Date() 返回 NaN 的问题

问题: 通过 new Date() 函数将后台返回的时间('2021-11-25')获取时间戳.在 chrome 浏览器中没有出现问题,但在 iPhone 真机测试的时候,显示的结果不符合预期.通过调试发现 iOS 中 new Date('2021-11-25') 返回的结果是 NaN,问题出现的原因是 iOS new Date() 中不能包含 - 符号. 解决办法: 最简单的办法,后台直接返回处理好的时间; 通过字符串的replace()方法(String.prototype.replace(

java中Infinity(无限)和NaN

1.i == i + 1 一个数字永远不会等于它自己加1?Java 强制要求使用IEEE 754 浮点数算术运算[IEEE 754],它可以让你用一个double 或float来表示无穷大.正如我们在学校里面学到的,无穷大加1还是无穷大. 你可以用任何被计算为无穷大的浮点算术表达式来初始化i,例如: double i = 1.0 / 0.0; 不过,你最好是能够利用标准类库为你提供的常量: double i = Double.POSITIVE_INFINITY; 事实上,你不必将i 初始化为无穷

【js实例】js中的5种基本数据类型和9种操作符

js中的5中基本数据类型 js标识符 第一个字符必须为字母,下划线,或美元符 其他字符可以是字母,下划线,美元符,数字 js标识符区分大小写 标识符不能使关键字和保留字 关键字: break do instanceof typeof case else new var catch finally return void continue for switch while debugger function this with default if throw   delete in try  

JavaScript中typeof、toString、instanceof、constructor与in

JavaScript 是一种弱类型或者说动态语言.这意味着你不用提前声明变量的类型,在程序运行过程中,类型会被自动确定. 这也意味着你可以使用同一个变量保存不同类型的数据. 最新的 ECMAScript 标准定义了 7 种数据类型: 7种内置类型:Boolean.Null.Undefined.Number.String.Symbol (ECMAScript 6 新定义)和Object,除 Object 以外的所有类型都是不可变的(值本身无法被改变). 一.typeof typeof操作符返回一个

计算机中的浮点数(IEEE754)

IEEE读作[a?-'tr?p(?)l-i:],电气和电子工程师协会.这个是一个包括所有电子和计算机技术的专业团体,制定标准是其工作之一. IEEE浮点数算术标准(IEEE 754)是最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用. 整数运算和浮点数运算会有不同的数学属性是因为它们处理数字表示有限性的方式不同——整数的表示算然只能编码一个相对较小的数字范围,但是这种表示是精确的:而浮点数虽然可以编码一个较大的数值范围,但是这种表示只是近似的. IEEE规定的浮点数编码会将一个浮点数转

C语言中的nan和inf使用

本文总结nan和inf在C语言当中的含义.产生和判定方法. C语言当中的nan 表示not a number,等同于 #IND:indeterminate (windows) 产生: 对浮点数进行了未定义的操作: 对负数开方,对负数求对数,0.0/0.0,0.0*inf.inf/inf.inf-inf这些操作都会得到nan.(0/0会产生操作异常:0.0/0.0不会产生操作异常,而是会得到nan): 在GNU中,使用宏:float NAN对浮点数赋值: 判定: 库函数方法:(推荐) <见后>

Javascript中的数据类型知多少

JavaScript 是一种弱类型或者说动态语言.这意味着你不用提前声明变量的类型,在程序运行过程中,类型会被自动确定.这也意味着你可以使用同一个变量保存不同类型的数据 根据ECMAScript 5.1的规范,javascript中共有六种数据类型,分别为:Undefined, Null, Boolean,Number, String.Object.前五种属于基本类型,最后一种属于Object类型. 最新的ECMAScript 6 又加了一种类型:Symbol (ECMAScript 6 新定义