说说C#的数学类,Math,浮点数

C#语言支持下图所看到的的数值类型,各自是整数,浮点数和小数

可能不是非常清楚,可是细致看看还是能看清楚的.

在一个C#程序中,整数(没有小数点的数)被觉得是一个int类型(除非其值大于最大的int值),依据数据值,该数据依次被视为uint,ling,ulong,带小数点的数被觉得是一个double值.这就是说(1.0).GetType()==typeof(double).

当中类型前面的字母’u’代表无符号的意思.由于无符号,所以u代表了数据是整数或0,不可能是负数.

检查整数溢出

考虑以下代码:

short s=32767;s+=1;

ushort us=0;us-=1;

在第一个情况下,一个有符号的数加1,经过其最大值,因为整数在内存中存储方式的原因,结果是-32768.

另外一种情况,一个无符号的数被减为小于0,结果将是65535.

这两个样例各自是上溢出和下溢出的情况,假设想避免这样的情况的发生,能够使用checkedkeyword:

short s=32767;

checked

{

s+=1;//将会产生一个上溢出

}

或者使用以下的编译器开关:

/checked+

默认编译器开关相应为:

/checked-

迄今为止,都在收执行时的整数向上或向下溢出检查,在默认情况下编译器会将编译时的向上和向下溢出标记为一个错误,而和你的编译器开关无关.

比如语句:short s=32767+1;这会产生一个编译时错误,由于在编译期间对加法进行求值.

比如以下这个案例;

const int i1=65536;

const int i2=65536;

int i3=i1*i2;

由于i1,i2都是const值,所以编译器在编译的时候会尝试对i3=i1*i2进行求值,并遇到一个向上溢出.所以会导致编译错误.

编译器开关不会覆盖这一行为,可是uncheckedkeyword能够覆盖这样的行为.

int i3=unchecked(i1*i2)能够正常通过编译.

小数类型

decimalkeyword表示128位数据类型.同浮点型相比,decimal类型具有更高的精度和更小的范围,这使它适合于財务和后比计算.decimal类型的大致范围和精度看上面的图.

它使用16字节(128位)存储每个值.128位被划分为96位整数位,一个符号位,一集一个能够在0-28之间变化的比例因子.在数学上,这个比例因子是一个10的负指数幂,表示数值中小数点位置的编号.

比如,假设一个小数定义等于12.34,那么这个数的存储方式是整数0x4D2(后1234),以及一个比例因子2.

仅仅要一个小数具有(或小于)28个有效数字以及(或小于)28个小数位置,decimal 数据类型就能够准确的存储它.对于浮点数而言,这是不成立的.\!假设定义一个float值等于12.34,那么它会被存储为0xC570A4(或12939428)除以0x100000(或1048576),这个值等于12.340000152587890625约等于12.34,即使将一个double值定义为12.34,他也是一个约等于12.34的数.

这就是你爱不想让美分神奇的出现和消失的地方运行计算时应该使用decimal的原因,由于浮点数不精确,浮点数据类型在科学和project应用方面非常合适,可是在金融应用不好使.

说说C#的数学类,Math,浮点数(上)的更多相关文章

  1. Java基础__Java中常用数学类Math那些事

     测试 package Cynical_Gary; public class Cynical_Text { public static void main(String[] args){ System ...

  2. Java开发知识之Java的数字处理类Math类

    Java开发知识之Java的数字处理类Math类 一丶Java.text.DecimalFormat类与NumberFormat类 首先 Java.text.DecimalFormat指的是Decim ...

  3. Java数学函数Math类

    Java数学函数Math类常用: Math.abs(12.3); //12.3 返回这个数的绝对值 Math.abs(-12.3); //12.3 Math.copySign(1.23, -12.3) ...

  4. 数字(数学)操作类 Math Random 类 ,大数字操作类

    Math 提供了大量的数学操作方法 Math类中所有的方法都是static 方法

  5. Math 数学类

    /* Math 数学类, 主要是提供了很多的数学公式. abs(double a) 获取绝对值 ceil(double a) 向上取整 floor(double a) 向下取整 round(float ...

  6. Java基础学习笔记之:System类;Math类;Arrays类BigInteger,BigDecimal

    System类 在API中System类介绍的比较简单,我们给出定义,System中代表程序所在系统,提供了对应的一些系统属性信息,和系统操作.System类不能手动创建对象,因为构造方法被priva ...

  7. Lua 数学类

    数学类主要有Vec2(坐标向量).Size(尺寸).Rect(矩形). 创建 在Lua中创建的 Vec2.Size.Rect 都是一个table类型. 其中只有相应的成员变量,没有相关的函数运算. c ...

  8. 处理数字的类 —— Math类 、 Random类 、 BigDecimal类 与 BigInteger类

    在我们学习C语言时,我们处理数据时要调用很多函数,那么,Java也有很多的方法可以来处理数值的类. 那么,在本篇博文中,本人就来讲解三个用于处理数值的类 -- Math类 . Random类 与 Bi ...

  9. Java:日历类、日期类、数学类、运行时类、随机类、系统类

    一:Calendar类 java.util 抽象类Calendar   1.static Calendar getInstance()使用默认时区和语言环境获得一个日历. 2. int get(int ...

随机推荐

  1. PhpStorm最新版 2017激活办法

    特别注意:为避免phpstorm联网时注册失效,请将“0.0.0.0 account.jetbrains.com”添加到hosts文件中. 最新版PhpStorm 2017正式版改进了PHP 7支持, ...

  2. sublime text3下使用TAG快捷键ctrl+alt+f失效的解决方法

    系统环境:WIN7 版本: sublime text3 问题:为了方便格式化html,下的TAG插件.在package control中在线安装能够安装成功,功能正常使用,就是ctrl+alt+f(A ...

  3. Arduino mega 2560驱动安装失败(没有建立对验证码(TM)签名的目录的发布者信任)的解决方法

    转载请注明出处,谢谢...... 放假的时候在自己家台式机上安装时候是很顺畅的,今天在自己本子上安装的时候就不行了~ IDE版本:1.05 问题描述:在网上搜索了相关问题,发现绝大部分安装失败的时候都 ...

  4. vi相关内容

    vi显示行号: 第一种是,手动显示:在vim命令行模式下输入 :set nu 取消显示:在vim命令行模式下输入: set nonu 第二种是,永久自动显示:我们修改一个配置文件. 我们输入命令:vi ...

  5. [BZOJ 4060] Word Equations

    Link: BZOJ 4060 传送门 Solution: 可以发现字符串间的关系可以构成一棵树 于是我们先用字符串哈希建树,再树形$dp$即可 设$dp[i][j]$为第$i$个节点从$P$字符串的 ...

  6. [ZOJ3522]Hide and seek

    题意:给一棵带边权的树,多次询问$(x,y,l)$表示如果加一条连接$x$和$y$的长为$l$的边,所有点到$x$和到$y$的最短路减少了多少 先把题目中的图放上来(雾 考虑用lct维护,先把路径提出 ...

  7. Problem A: 调用函数,计算分段函数的值

    #include<stdio.h> int sign(int n)//函数申明,定义函数 { int m; ) m=; ) m=; ) m=-; return m;//返回结果 } int ...

  8. Problem E: 调用函数,求m-n之间的所有完数

    #include<stdio.h> int factorsum(int number)//定义函数 { ; ;i<number;i++) ) s+=i; return s; } in ...

  9. spark 持久化机制

    spark的持久化机制做的相对隐晦一些,没有一个显示的调用入口. 首先通过rdd.persist(newLevel: StorageLevel)对此rdd的StorageLevel进行赋值,同chec ...

  10. android连接Mysql数据库之JDBC方式

    一.创建一个数据库和若干表,并导入相关信息.这里以我之前使用的一个图书系统的数据库为例子. 首先假设已经安装并配置好Mysql.(建议大家安装WAMP,也就是安装完这个,就相当于安装了Mysql,PH ...