double test1 = 0;
for (int i = 0; i < 100000000; i++)
{
test1 += 0.0001;
}

请问 test1 的值是几?

答案是:9999.99999919852(本次测试结果)

拿 Decimal 重新测试一次,结果是正确的

下面是测试代码

  static void Main(string[] args)
{
Stopwatch sp = new Stopwatch();
sp.Start(); double test1 = ;
for (int i = ; i < ; i++)
{
test1 += 0.0001;
}
sp.Stop();
string str1 = string.Format("double 类型 0.0001 累加10万次 值[{0}] 耗时[{1}]", test1.ToString(), sp.ElapsedMilliseconds.ToString());
Console.WriteLine(str1); sp.Restart();
decimal test2 = ;
for (int i = ; i < ; i++)
{
test2 += Convert.ToDecimal(0.0001);
}
sp.Stop();
string str2 = string.Format("decimal类型 0.0001 累加10万次 值[{0}] 耗时[{1}]", test2.ToString(), sp.ElapsedMilliseconds.ToString());
Console.WriteLine(str2); sp.Restart();
double test5 = ;
for (int i = ; i < ; i++)
{
test5 += 0.5;
}
sp.Stop();
string str3 = string.Format("double 类型 0.5 累加10万次 值[{0}] 耗时[{1}]", test5.ToString(), sp.ElapsedMilliseconds.ToString());
Console.WriteLine(str3); sp.Restart();
double test25 = ;
for (int i = ; i < ; i++)
{
test25 += 0.25;
}
sp.Stop();
string str4 = string.Format("double 类型 0.25 累加10万次 值[{0}] 耗时[{1}]", test5.ToString(), sp.ElapsedMilliseconds.ToString());
Console.WriteLine(str4); sp.Restart();
double test6 = ;
for (int i = ; i < ; i++)
{
test6 += 0.6;
}
sp.Stop();
string str5 = string.Format("double 类型 0.6 累加10万次 值[{0}] 耗时[{1}]", test6.ToString(), sp.ElapsedMilliseconds.ToString());
Console.WriteLine(str5); Console.ReadKey();
}

Decimal 不丢失精度,但是慢

double   丢失精度 ,速度快,对数据要求不严格推荐使用。     1/2n  时,不丢失精度

网上查到的相关文章

float,double等精度丢失问题

c# 重新认识 Double 浮点型的更多相关文章

  1. 解决java float double 浮点型参与计算失精度

    本人前段时间做一个社区电商应用,发现了一个 天坑   ...................让我哭会 . 下面听听我的踩坑之路吧 ,电商肯定跟¥打交道了,计算少不了的.由于本人太菜 单纯的以为  fl ...

  2. iOS开发系列--Swift语言

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  3. iOS-Swift编程

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  4. java语法基础

    Java的基本符号(token) Java的单词符号有五种:关键字.标识符.常量.分隔符和操作符. Java的字符集 Java 采用一种称为unicode的字符集,该字符集合是一种新的编码标准,与常见 ...

  5. day04关于MySqL—Android小白的学习笔记

    Mysql入门 1. 数据库基本知识(了解) 1.1.数据库介绍 1.1.1.什么是数据库?数据库的作用是什么? 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户 ...

  6. C语言的关键字,标示符以及数据类型

      1. 关键字 1>     关键字就是C语言提供的有特殊含义的符号,也叫做“保留字” 2>     C语言一共提供了32个关键字,这些关键字都被C语言赋予了特殊含义 auto doub ...

  7. c中的数据类型、常量、变量

    一. 数据 1. 什么是数据 生活中时时刻刻都在跟数据打交道,比如体重数据.血压数据.股价数据等.在我们使用计算机的过程中,会接触到各种各样的数据,有文档数据.图片数据.视频数据,还有聊QQ时产生的文 ...

  8. Sql与MySQL简单入门

    作为过来人,给"新司机"一点建议:运维时需要搭建的生产环境,需尽量保持与测试环境一致:但搭建环境时,又苦于找不到合适的版本怎么办?不用怕,我是一个体贴的人,管杀也管埋(该链接为My ...

  9. Java中的基本数据类型

    什么是基本数据类型 就是我们在编程的时候经常需要用到的数据类型,如整型,浮点型等,把这些数据类型专门拿出来特殊对待,并想象成所谓的“基本类型”. Java中有哪些基本数据类型

随机推荐

  1. 在pcDuino上刷了AndDroid,Ubuntu,XBMC

    一.Android.Ubuntu.XBMC播放高清视频得比较 1.Andrioid上播放1080P 无压力,硬件解码 2.Ubuntu上用Mplayer播放视频会很卡,可能是没有硬解的原因 3.Ubu ...

  2. validate方法配置项

    validate()方法配置项 submitHandler 通过验证后运行的函数,可以加上表单提交的方法 invalidHandler 无效表单提交后运行的函数 ignore 对某些元素不进行验证 r ...

  3. SCOI2013 多项式的运算

    ---恢复内容开始--- 又是一道裸数据结构题. 之前受序列操作的蛋疼写法影响,只用一个tag,不知道怎么记,之后看了下别人的,终于领悟要用两个tag,一个add,一个mul,维护相当简单,想清楚就行 ...

  4. java 从零开始,学习笔记之基础入门<Oracle_基础>(三十三)

    Oracle 数据库基本知识   [训练1] 显示DEPT表的指定字段的查询.               输入并执行查询:               SELECTdeptno,dname FROM ...

  5. OneToMany与ManyToOne的属性

    供自己查阅,嫌低级的勿喷! 1.OneToMany的属性 ①targetEntity 定义关系类的类型,默认是该成员属性对应的类类型,所以通常不需要提供定义. ②mappedBy 定义类之间的双向关系 ...

  6. Android WebView Error – Uncaught TypeError: Cannot call method ‘getItem’ of null at

    本质原因是js 没有判断dom 是否加载完毕 其实就是在dom 加载完毕之后处理事件 wv.getSettings().setDomStorageEnabled(true); 转自 蛙齋  http: ...

  7. loadView,viewDidLoad等几种方法的调用总结

    viewDidLoad 此方法只有当view从nib文件初始化的时候才被调用.viewDidLoad用于初始化,加载时用到的. loadView 此方法在控制器的view为nil的时候被调用.虽然经常 ...

  8. HDU 4628 多校第三场1008 dp

    这题就没什么好说的了.直接枚举2 ^ 16 的状态,用1表示拿这位,0表示不拿,每次判断是否可以这么拿. #include <iostream> #include <cstdio&g ...

  9. PHPExcel讀取excel數據

    require_once 'PHPExcel.php'; $PHPReader = new PHPExcel_Reader_Excel2007(); $filePath = 'wjyl.xlsx'; ...

  10. php laravel mysql无法连接处理方案(linux服务器配置)

    阿里云 Ubuntu 14.*上搭建laravel环境 之前做项目时都是搭建在自己的服务器上,可是自己的那个服务器是很久以前一点点配置好的,也是各种百度,该忘记的都忘了, 所以前一段在客户的阿里云Ub ...