• C#中的坑--浮点类型

    2019-10-30 23:18:19
    浮点数的精度可变,在一个表达式中只有当除数是2的整数次幂时才能准确无误的计算出结果,其他情况下用浮点类型无法准确的计算出结果。这个听起来很乱对吧,下面我就详细地讲一下。当我们将浮点类型的变量值设置为0.1...

    浮点数的精度可变,在一个表达式中只有当除数是2的整数次幂时才能准确无误的计算出结果,其他情况下用浮点类型无法准确的计算出结果。这个听起来很乱对吧,下面我就详细地讲一下。当我们将浮点类型的变量值设置为0.1时,C#就会很容易表示成0.099999999999999999,或者0.1000000000000000001,或者是一个非常接近0.1的数字。根据定义,浮点数的精度与它所代表的数字的大小成正比,也就是说浮点数的精度是由有效位数的个数决定的,而不是由一个固定值决定的。所以说如果在开发中需要精确的数字(例如金融行业的应用),那么我们就不能使用浮点类型,应该使用 decimal 类型。

    展开全文
  • 浮点类型和 小数类型

    2019-07-20 05:42:10
    浮点类型 小数在C#中采用浮点类型的数据来表示,浮点类型的数据包含两种:单精度浮点型(float)和双精度浮点型(double),其区别在于取值范围和精度的不同。计算机对浮点数据的运算速度大大低于对整数的运算速度,...

    浮点类型
    小数在C#中采用浮点类型的数据来表示,浮点类型的数据包含两种:单精度浮点型(float)和双精度浮点型(double),其区别在于取值范围和精度的不同。计算机对浮点数据的运算速度大大低于对整数的运算速度,因此在对精度要求不高的情况下,我们可以采用单精度类型,而在精度要求较高的情况下可以使用双精度类型。
    float类型是32位宽,double类型是64位宽。
    浮点类型数据的精度如下:
    单精度:精度为7位数
    双精度:精度为15~16位数


    小数类型
    小数类型(decimal)类型数据是高精度的类型数据,占用16个字节(128位),主要为了满足需要高精度的财务和金融计算机领域。小数类型数据的精度为29位数
    小数类型数据的后面必须跟m或者M后缀来表示它是decimal类型的,如3.14m、0.28m等,否则就会被解释成标准的浮点类型数据,导致数据类型不匹配。

    转载于:https://www.cnblogs.com/yuesebote/p/9115566.html

    展开全文
  • C# 浮点转时间

    2019-08-02 08:02:43
    什么是浮点转时间呢? 今天写的一个计时功能,想来想去还是现在这种解决方案比较合适 先上一张图在来讲解比较明了 如图:赛车游戏的计时 计时格式为:分'秒'毫秒 先来个脑筋急转弯让大家乐乐 已知: 1小时=...

    想了大半天实在想不出什么更适合文章的标题。。。

    就现在这个标题,挺好- -

    什么是浮点转时间呢?

    今天写的一个计时功能,想来想去还是现在这种解决方案比较合适

    先上一张图在来讲解比较明了

    如图:赛车游戏的计时

    计时格式为:分'秒'毫秒

    先来个脑筋急转弯让大家乐乐

    已知:

    1小时=60分

    1分=60秒

    1秒=?毫秒

    敲了四年代码今天我居然会掉进这个坑里!!估计脑袋短路了吧- -

    按照这个逻辑1秒=60毫秒,这是完全错误的!1秒=1000毫秒才是正确的答案

    好吧,请深深的鄙视我吧。。。

    其实这篇文章没有什么高深的东西,主要说这种解决方案还是不错滴

    怎么个不错法呢,听我一一道来

    可以看见上图中有一个“个人记录”一栏

    如果我们要把这个数据存在数据库中,咋存?

    用存日期时间的方式?

    用文本?

    在这里我用的是浮点型

    从游戏开始计算,一局游戏我到完成花费了150.12秒

    我就直接把150.12存进数据库,然后读取的时候在把这个数转换成 分/秒/毫秒 这样的格式

    可以看见当 分/秒/毫秒 为一位数时,会自动补0,比如:01 02 03 这样

    所以我们现在要做的是,获取时间:totalTime += Time.deltaTime;

    然后在相对应的计算出 分/秒/毫秒

    我写了一个方法,这个方法仅供我计时用

    其他地方反正用不上,就不考虑扩展性什么的了

    参考一下我的思路就行!上代码

     1     /// 计算时间 <summary>
     2     /// 计算时间
     3     /// </summary>
     4     /// <param name="_Convert">欲计算的文本</param>
     5     /// <param name="_point">小数点左=0;右=1</param>
     6     /// <returns>返回格式 00</returns>
     7     private string CalcTime(string _Convert, int _point)
     8     {
     9         string[] temSplit = _Convert.Split(new char[] { '.' });
    10 
    11         if (Convert.ToInt32(temSplit[_point]) < 10)
    12             return ("0" + temSplit[_point]).Replace("-", "0");
    13 
    14         //被整除的时候为'-.--',所以直接替换成0
    15         return (temSplit[_point].Substring(0, 1) + temSplit[_point].Substring(1, 1)).Replace("-","0");
    16     }

    没错,你没有看错,我用的就是这么简单的方法

    调用的代码

    1     void FixedUpdate()
    2     {
    3         totalTime += Time.deltaTime;
    4         temMinute = CalcTime(Convert.ToDouble(totalTime / 60f).ToString("0.00"), 0);
    5         temSeconds = CalcTime(Convert.ToDouble(totalTime - Convert.ToDouble(temMinute) * 60f).ToString("0.00"), 0);
    6         temMilli = CalcTime(Convert.ToDouble(totalTime - Convert.ToDouble(temMinute) * 60f).ToString("0.00"), 1);
    7     }

    好吧,真的一点不高深,纯属看思路

    也没啥好说的,随便看看吧

    我游戏功能要实现的功能还有一大堆,先闪了

    写得不好勿喷

    本文链接:http://www.cnblogs.com/shenggege/p/4251123.html

    转载于:https://www.cnblogs.com/shenggege/p/4251123.html

    展开全文
  • 今天在看C#的基础部分,发现浮点型和小数型很相似,想区别下。 1.两者的精度不同 浮点型常量又分为单精度浮点型常量和双精度浮点型常量。单精度浮点型常量常在末尾添加f或F,双精度浮点型常量则是添加d或D。 ...

    今天在看C#的基础部分,发现浮点型和小数型很相似,想区别下。

    1.两者的精度不同

    浮点型常量又分为单精度浮点型常量和双精度浮点型常量。单精度浮点型常量常在末尾添加f或F,双精度浮点型常量则是添加d或D。

    float精度为7位,double精度为15~16位,decimal精度为28~29位

    2.注意事项

    小数型常量的后面必须添加m或者M标记,否则会被解释成标准的浮点型数据。即会被解释成双精度浮点型常量。

    小数型一般用于高精度的财务和金融计算领域。

    计算机对浮点数的运算速度大大低于对整数的运算速度,数据的精度越高对计算机的资源要求越高。因此,在对精度要求不高的情况下,应尽量使用单精度型,而对精度要求较高的情况,可使用双精度型。

    展开全文
  • uint 关键字表示一种整型,该类型根据下表显示的大小和范围存储值。 类型 范围 大小 .NET Framework 类型 uint 0 到 4,294,967,295 无符号 32 位整数 System..::...

    下表显示了整型的大小和范围,这些类型构成了简单类型的一个子集。

    类型

    范围

    大小

    sbyte

    -128 到 127

    有符号 8 位整数

    byte

    0 到 255

    无符号 8 位整数

    char

    U+0000 到 U+ffff

    16 位 Unicode 字符

    short

    -32,768 到 32,767

    有符号 16 位整数

    ushort

    0 到 65,535

    无符号 16 位整数

    int

    -2,147,483,648 到 2,147,483,647

    有符号 32 位整数

    uint

    0 到 4,294,967,295

    无符号 32 位整数

    long

    -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807

    有符号 64 位整数

    ulong

    0 到 18,446,744,073,709,551,615

    无符号 64 位整数

    如果整数表示的值超出了 ulong 的范围,将产生编译错误。



    下表显示了浮点型的精度和大致范围。

    类型

    大致范围

    精度

    float

    ±1.5e−45 到 ±3.4e38

    7 位

    double

    ±5.0e−324 到 ±1.7e308

    15 到 16 位


    decimal 关键字表示 128 位数据类型。同浮点型相比,decimal 类型具有更高的精度和更小的范围,这使它适合于财务和货币计算。decimal 类型的大致范围和精度如下表所示。

    类型

    大致范围

    精度

    .NET Framework 类型

    decimal

    ±1.0 × 10-28 到 ±7.9 × 1028

    28 到 29 位有效位

    System..::.Decimal

    文本

    如果希望实数被视为 decimal 类型,请使用后缀 m 或 M,例如:

     
    decimal myMoney = 300.5m;



    展开全文
  • 今天用C#计算10000个float数据求和结果与Excel比对居然相差五百多,网上查了半天,最后结果是将类型转换为decimal,问题最终解决。 下面附上一些查到的东西 1、float只有7位有效数字,decimal类型比float,double...
  • float f=0.65f; int ret0 = (int)((float)(0.65f*20));//返回12 int ret1 = (int)((double)(0.65f*20));//返回12 int ret2 = (int)(0.65*20);//返回13 int ret3 = (int)(0.65f*20);...
  • 1.计算误差 浮点的精度是可变的,除非分数是2的整数幂次方,否者无法用有限的二进制小数表示。 即 0.1 分母为10, 则分数应该是2的3次方至2的4次方之间,具体是多少我也算不出来了···。即这个次方数会为一个特别...
  • ​​其实说到浮点计算能力,首先得区分不同精度的浮点数,虽然Linpack测试里只关心双精度的浮点计算能力,但在其他领域,有时候反而会更加关注单精度甚至是半精度的浮点计算能力。 半精度、单精度、双精度这些概念...
  •  C#中的基本数据类型包括8种整数类型,2种二进制浮点类型,1种用于金融计算的十进制浮点类型,字符类型型和布尔类型。这些是C#中预定义的数据类型,也是构建其他数据类型的基础数据类型。 二、整数类型  整数...
  • JS的浮点计算

    2018-07-19 17:56:36
    最近在做电商项目的时候,遇到了价格计算的时候,会出现类似欲199.9999999999999999999的情况,但是我明明计算的两个值是只有两位数,怎么会出现这种情况呢? 后来经过查找资料才知道: 比如0.1 + 0.2 = 0....
  • C#中,有且仅有两种数据类型:值类型和引用类型。换言之,一个变量要么是值类型,要么是引用类型。像我们常见的数据类型(int,float,double)、结构、枚举等等都属于值类型,而像类、接口、委托等都属于引用类型。...
  • C#中值的小数类型

    2019-08-10 11:45:05
    C#中值的小数类型 开发工具与关键技术:Visual Studio 2015 作者:徐晶旗 ...小数类型数据的范围远远小于浮点类型,不过它的精度比浮点类型高得多。所以相同的数字对于两种类型来说可能表达的内容并...
  • C# 支持九种整型:sbyte、byte、short、ushort、int、uint、long、ulong和 char。 其中char类型比较特殊。虽然属于整型类别。但是以下两个方面不同于其他整型: 1)不存在从其他类型到 char类型的隐式转换。具体说...
  • c# float类型和double类型相乘出现精度丢失 double db = 4.0; double db2 = 1.3; float f = 1.3F; float f2 = 4.0F; Decimal de = Convert.ToDecimal(f...
  • 1.基本类型分为4种:整型、布尔类型、浮点类型、字符类型,只是C#特别多了个不是基本类型的decimal类型,用于财务计算,精确度很高但很少使用。 2.整型当中,java都是有符号整型,所以仅byte、sho...
  • 2、浮点类型 float数据类型用于较小的浮点数,因为它要求的精度较低。 double数据类型比float数据类型大,提供的精度也大一倍(15位)。 如果在代码中没有对某个非整数值(如12.3)硬编码,则编译器一般假定该变量是...
  • C#基本数据类型

    2019-05-23 09:09:27
    C#基本数据类型 在第一章我们了解了C#的输入、输出语句后,我这一节主要是介绍C#的基础知识,本节的内容也是后续章节的基础,好的开端等于成功的一半。在你阅读完本章后,你就有足够的C#知识编写简单的程序了。但还...
  • C#数据类型转换

    2019-06-18 09:08:18
    C#数据类型转换——数值字符串和数值之间的转换 在 C# 中,字符串是用一对双引号包含的若干字符来表示的,如 “123”。而 “123” 又相对特殊,因为组成该字符串的字符都是数字,这样的字符串,就是数值字符串。 在...
  • C#中值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中。 值类型(value type):byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型。值...
1 2 3 4 5 ... 20
收藏数 9,383
精华内容 3,753