using Fasterflect;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication2
{
class Program_NaNAndInfinity
{
static void Main(string[] args)
{
/*
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)。
*/
// 表示不是数字 (NaN) 的值
Console.WriteLine("NaN == NaN: {0}", Double.NaN == Double.NaN);
Console.WriteLine("NaN != NaN: {0}", Double.NaN != Double.NaN);
Console.WriteLine("NaN.Equals(NaN): {0}", Double.NaN.Equals(Double.NaN));
Console.WriteLine("! NaN.Equals(NaN): {0}", !Double.NaN.Equals(Double.NaN));
Console.WriteLine("IsNaN: {0}", Double.IsNaN(Double.NaN));
Console.WriteLine("\nNaN > NaN: {0}", Double.NaN > Double.NaN);
Console.WriteLine("NaN >= NaN: {0}", Double.NaN >= Double.NaN);
Console.WriteLine("NaN < NaN: {0}", Double.NaN < Double.NaN);
Console.WriteLine("NaN < 100.0: {0}", Double.NaN < 100.0);
Console.WriteLine("NaN <= 100.0: {0}", Double.NaN <= 100.0);
Console.WriteLine("NaN >= 100.0: {0}", Double.NaN > 100.0);
Console.WriteLine("NaN.CompareTo(NaN): {0}", Double.NaN.CompareTo(Double.NaN));
Console.WriteLine("NaN.CompareTo(100.0): {0}", Double.NaN.CompareTo(100.0));
Console.WriteLine("(100.0).CompareTo(Double.NaN): {0}", (100.0).CompareTo(Double.NaN)); // double.PositiveInfinity, float.PositiveInfinity 此常数的值是正数被零除所得到的结果。当运算结果大于 MaxValue 时,返回此常数。
Console.WriteLine("5 / 2 = {0}", 5 / 2); // 2
Console.WriteLine("5.0 / 2.0 = {0}", 5.0 / 2.0); // 2.5
Console.WriteLine("5.0 / 2 = {0}", 5.0 / 2); // 2.5
Console.WriteLine("5 / 2.0 = {0}", 5 / 2.0); // 2.5
Console.WriteLine("5.0 / 0.0 = {0}", 5.0 / 0.0); // Infinity
Console.WriteLine("5.0 / 0 = {0}", 5.0 / 0); // Infinity
Console.WriteLine("0.0 / 0.0 = {0}", 0.0 / 0.0); // NaN
Console.WriteLine("5 / 0.0 = {0}", 5 / 0.0); // Infinity
Console.WriteLine("0.0 / 0 = {0}", 0.0 / 0); // NaN
Console.WriteLine("double.MinValue < double.PositiveInfinity : {0}", double.MinValue <= double.PositiveInfinity);
Console.WriteLine("double.MinValue > double.PositiveInfinity : {0}", double.MinValue >= double.PositiveInfinity);
Console.WriteLine("double.MaxValue < double.PositiveInfinity : {0}", double.MaxValue <= double.PositiveInfinity);
Console.WriteLine("double.MaxValue > double.PositiveInfinity : {0}", double.MaxValue >= double.PositiveInfinity); // double.NegativeInfinity, float.NegativeInfinity 此常数的值是负数被零除所得到的结果。当运算结果小于 MinValue 时,返回此常数。
Console.WriteLine("-5 / 2 = {0}", -5 / 2); // 2
Console.WriteLine("-5.0 / 2.0 = {0}", -5.0 / 2.0); // -2.5
Console.WriteLine("-5.0 / 2 = {0}", -5.0 / 2); // -2.5
Console.WriteLine("-5 / 2.0 = {0}", -5 / 2.0); // -2.5
Console.WriteLine("-5.0 / 0.0 = {0}", -5.0 / 0.0); // Infinity
Console.WriteLine("-5.0 / 0 = {0}", -5.0 / 0); // Infinity
Console.WriteLine("0.0 / 0.0 = {0}", 0.0 / 0.0); // NaN
Console.WriteLine("-5 / 0.0 = {0}", -5 / 0.0); // Infinity
Console.WriteLine("0.0 / 0 = {0}", 0.0 / 0); // NaN
Console.WriteLine("double.MinValue < double.NegativeInfinity : {0}", double.MinValue <= double.NegativeInfinity);
Console.WriteLine("double.MinValue > double.NegativeInfinity : {0}", double.MinValue >= double.NegativeInfinity);
Console.WriteLine("double.MaxValue < double.NegativeInfinity : {0}", double.MaxValue <= double.NegativeInfinity);
Console.WriteLine("double.MaxValue > double.NegativeInfinity : {0}", double.MaxValue >= double.NegativeInfinity); // 判断是否为无穷大
Console.WriteLine("float.IsInfinity(0.5F) = {0}", float.IsInfinity(0.5F)); // false
Console.WriteLine("float.IsInfinity(float.NegativeInfinity) = {0}", float.IsInfinity(float.NegativeInfinity)); // true
Console.WriteLine("float.IsInfinity(float.PositiveInfinity) = {0}", float.IsInfinity(float.PositiveInfinity)); // true // 判断是否为NaN 或者 Infinity只能使用 double.IsNaN()及float.IsInfinity() // 参考资料: https://msdn.microsoft.com/zh-cn/library/system.double.nan(v=vs.110).aspx Console.Read();
}
}
}

NaN 和 Infinity的更多相关文章

  1. 建议3:正确处理Javascript特殊值---(1)正确使用NaN和Infinity

    NaN时IEEE 754中定义的一个特殊的数量值.他不表示一个数字,尽管下面的表达式返回的是true typeof(NaN) === 'number' //true 该值可能会在试图将非数字形式的字符 ...

  2. java中的NAN和INFINITY

    java浮点数运算中有两个特殊的情况:NAN.INFINITY. 1.INFINITY: 在浮点数运算时,有时我们会遇到除数为0的情况,那java是如何解决的呢? 我们知道,在整型运算中,除数是不能为 ...

  3. C#中的Infinity和NaN

    C#中double和float类型有两个特殊值: Infinity(无穷大):5.0 / 0.0 = Infinity NaN(not a number):0.0 / 0.0 = NaN 计算表达式 ...

  4. JavaScript 对数据处理的5个API

    JavaScript对数据处理包括向上取整.向下取整.四舍五入.固定精度和固定长度5种方式,分别对应ceil,floor,round,toFixed,toPrecision等5个API,本文将对这5个 ...

  5. JavaScript 中的数据类型

    Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...

  6. YYModel 源码解读(二)之NSObject+YYModel.h (5)

    好了,之前的博文中详细的解释了一些辅助的类和辅助的函数,接下来就是使用它们来实现酷炫功能的时候,正所谓磨刀不误砍柴工啊 我们先把总的功能罗列出来 1. json转字典              + ( ...

  7. ESLint 规则

    ESLint由 JavaScript 红宝书 作者 Nicholas C.Zakas 编写, 2013 年发布第一个版本. ESLint是一个以可扩展.每条规则独立的,被设计为完全可配置的lint工具 ...

  8. Python之路Day15--JavaScript(一)

    一.JavaScript简介 JavaScript是世界上最流行的脚本语言,因为你在电脑.手机.平板上浏览的所有的网页,以及无数基于HTML5的手机App,交互逻辑都是由JavaScript驱动的. ...

  9. javascript中的内置对象总结

    内置对象 标准内置对象 Object Object.create Object.prototype.toString Object.prototype.hasOwnProperty Boolean S ...

随机推荐

  1. jquery的学习

    可选的 speed 参数规定隐藏/显示的速度,可以取以下值:"slow"."fast" 或毫秒.可选的 callback 参数是动画 100% 完成后所执行的函 ...

  2. setcookie 之 我见

    $default_currency=get_default_currency(); $_COOKIE['currency'] = $default_currency['currency']; $_CO ...

  3. POJ 2349 Arctic Network (最小生成树)

    Arctic Network Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Subm ...

  4. Java时间戳与日期格式字符串的互转

    上代码: import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { /** * 时间戳转换成日 ...

  5. codeforces 676B B. Pyramid of Glasses(模拟)

    题目链接: B. Pyramid of Glasses time limit per test 1 second memory limit per test 256 megabytes input s ...

  6. hdu-5695 Gym Class(贪心+拓扑排序)

    题目链接: Gym Class Time Limit: 6000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others) ...

  7. 初识 Asp.Net内置对象之Session对象

    Session对象 Session对象用于存储在多个页面调用之间特定用户的信息.Session对象只针对单一网站使用者,不同的客户端无法相互访问.Session对象中止联机机器离现时,,也就是当网站使 ...

  8. ORACLE中大数据量查询实现优化

    大数据量查询,对数据库开发者来说,性能问题往往是最需要费尽心机的,借此总结自己优化此类问题的心得与大家分享,以免大家走更多的弯路. 1.使用主键临时表 大数据量表关联查询,是性能开销的主要原因.通过主 ...

  9. How to Use Rsync to Sync New or Changed/Modified Files in Linux

    As a system administrator or Linux power user, you may have probably come across or even on several ...

  10. Table of Contents - Redis

    Getting Started 安装配置环境 Redis 命令 Keys Strings Lists Hashs Sets Sorted Sets Transactions Connection Se ...