NaN 和 Infinity
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的更多相关文章
- 建议3:正确处理Javascript特殊值---(1)正确使用NaN和Infinity
NaN时IEEE 754中定义的一个特殊的数量值.他不表示一个数字,尽管下面的表达式返回的是true typeof(NaN) === 'number' //true 该值可能会在试图将非数字形式的字符 ...
- java中的NAN和INFINITY
java浮点数运算中有两个特殊的情况:NAN.INFINITY. 1.INFINITY: 在浮点数运算时,有时我们会遇到除数为0的情况,那java是如何解决的呢? 我们知道,在整型运算中,除数是不能为 ...
- C#中的Infinity和NaN
C#中double和float类型有两个特殊值: Infinity(无穷大):5.0 / 0.0 = Infinity NaN(not a number):0.0 / 0.0 = NaN 计算表达式 ...
- JavaScript 对数据处理的5个API
JavaScript对数据处理包括向上取整.向下取整.四舍五入.固定精度和固定长度5种方式,分别对应ceil,floor,round,toFixed,toPrecision等5个API,本文将对这5个 ...
- JavaScript 中的数据类型
Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...
- YYModel 源码解读(二)之NSObject+YYModel.h (5)
好了,之前的博文中详细的解释了一些辅助的类和辅助的函数,接下来就是使用它们来实现酷炫功能的时候,正所谓磨刀不误砍柴工啊 我们先把总的功能罗列出来 1. json转字典 + ( ...
- ESLint 规则
ESLint由 JavaScript 红宝书 作者 Nicholas C.Zakas 编写, 2013 年发布第一个版本. ESLint是一个以可扩展.每条规则独立的,被设计为完全可配置的lint工具 ...
- Python之路Day15--JavaScript(一)
一.JavaScript简介 JavaScript是世界上最流行的脚本语言,因为你在电脑.手机.平板上浏览的所有的网页,以及无数基于HTML5的手机App,交互逻辑都是由JavaScript驱动的. ...
- javascript中的内置对象总结
内置对象 标准内置对象 Object Object.create Object.prototype.toString Object.prototype.hasOwnProperty Boolean S ...
随机推荐
- Scala初体验
因为工作中要用到Scala了,本来前面自己还在学习Storm的,没有办法,先把Scala和Spark的这些内容学完在回去看Storm吧! 既然我们要学习Scala,那么我们不禁的要问了,什么是Scal ...
- Data Structure 之 二叉树
在计算机科学中,二叉树是每个节点最多有两个子树的树结构.通常子树被称作“左子树”(left subtree)和“右子树”(right subtree).二叉树常被用于实现二叉查找树和二叉堆 ...
- solr4.x配置IK2012FF智能分词+同义词配置
本文配置环境:solr4.6+ IK2012ff +tomcat7 在Solr4.0发布以后,官方取消了BaseTokenizerFactory接口,而直接使用Lucene Analyzer标准接口T ...
- XACML-<Target> 元素的结构与相关的评估
本文由@呆代待殆原创,转载请注明出处. 一.<Target>元素的结构 <Target>元素标识的父元素被用于评估决定请求.<Target>元素即可以做为<P ...
- bootstrap表格多样式及代码
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...
- Java内存管理的9个小技巧
Java内存管理的9个小技巧很多人都说“Java完了,只等着衰亡吧!”,为什么呢?最简单的的例子就是Java做的系统时非常占内存!一听到这样的话,一定会有不少人站出来为Java辩护,并举出一堆的性能测 ...
- 转: 数字证书原理 https 完整过程解析
点评: 讲的非常的详细与全面,值得一看. 转: http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html 文中首先解释了加密解 ...
- [转]移动App测试中的最佳做法
Daniel Knott 用过各种不同编程语言和软件质量保证工具.他在软件开发和测试方面干了七年,自2010年起,他一直在德国汉堡的XING AG公司就职,几个项目里,比如XING调查和XING建议, ...
- css3 transfrom使用以及其martix(矩阵)属性与其它属性的关系
写法 其属性martix与skew .scale .translate之间的关系 兼容性 : IE9+ : -ms-transform : IE9只支持2D转换 fire ...
- 【CSS3】---盒模型margin、padding及border
盒模型--边框 盒子模型的边框就是围绕着内容及补白的线,这条线你可以设置它的粗细.样式和颜色(边框三个属性). 如下面代码为 div 来设置边框粗细为 2px.样式为实心的.颜色为红色的边框: div ...