为什么使用long声明和double声明得到的结果不一样呢?

程序如下:

 public class P376{
public static void main(String[] atgs){
long sum1=0,n1=1; //此处采用long声明;
for (int i=1;i <=20;i++) {
n1*=i;
sum1+=n1;
}
System.out.println("1!+2!+3!+4!+5!....+20!="+sum1);
//-------------------------------------------------------------
double sum2=0,n2=1; //此处采用double声明;
for (int i=1;i <=20;i++) {
n2*=i;
sum2+=n2;
}
System.out.println("1!+2!+3!+4!+5!....+20!="+sum2);
}
}

结果为:
1!+2!+3!+4!+5!....+20!=2561327494111820313
1!+2!+3!+4!+5!....+20!=2.5613274941118203E18

本来double型比 long型的精度还要高,为什么double型最后两位“13”就没有了呢? 
 不是比long型的精度还要低了嘛?
请问是不是double使用科学计数法只精确到小数点后16位显示?实际上结果是没有误差的?
使用float只显示小数点后8位呢?

为什么使用long声明和double声明得到的结果不一样呢?的更多相关文章

  1. [js]变量声明、函数声明、函数定义式、形参之间的执行顺序

    一.当函数声明和函数定义式(变量赋值)同名时 function ledi(){ alert('ledi1'); }; ledi(); var ledi = function (){ alert('le ...

  2. javaScript的函数(Function)对象的声明(@包括函数声明和函数表达式)

    写作缘由: 平时再用js写函数的时候,一般都是以惯例 function fn () {} 的方式来声明一个函数,在阅读一些优秀插件的时候又不免见到 var fn = function () {} 这种 ...

  3. 浅谈JS变量声明和函数声明提升

    先来两个问题 很多时候,在直觉上,我们都会认为JS代码在执行时都是自上而下一行一行执行的,但是实际上,有一种情况会导致这个假设是错误的. a = 2; var a; console.log(a); 按 ...

  4. 函数声明 和 var声明的优先级

    function demo() { console.log(5) } var demo = function(){ console.log(4) } console.log(demo()) var d ...

  5. [js]js的惰性声明, js中声明过的变量(预解释),后在不会重新声明了

    js的惰性声明, js中声明过的变量(预解释),后在不会重新声明了 fn(); // 声明+定义 js中声明过一次的变量,之后在不会重新声明了 function fn() { console.log( ...

  6. 理解C语言中指针的声明以及复杂声明的语法

    昨天刚把<C程序设计语言>中"指针与数组"章节读完,最终把心中的疑惑彻底解开了.如今记录下我对指针声明的理解.顺便说下怎样在C语言中创建复杂声明以及读懂复杂声明. 本文 ...

  7. javascript中函数声明、变量声明以及变量赋值之间的关系与影响

    javascript中函数声明.变量声明以及变量赋值之间的关系与影响 函数声明.变量声明以及变量赋值之间有以下几点共识: 1.所有的全局变量都是window的属性 2.函数声明被提升到范围作用域的顶端 ...

  8. JavaScript 函数声明和变量声明

    声明语句:声明语句是用来声明或定义标识符(变量和函数名)并给其赋值. 1:var 变量声明(5.3.1节): var语句用来声明一个或多个变量:var name_1 = [= value_1] [ , ...

  9. Js中有关变量声明和函数声明提升的问题

    在ECMAScript5中没有块级作用域一说,只有函数作用域和全局作用域,在其中声明的变量和函数和其他语言的展现形式不同,在某些情况下不一定需要先定义后使用,函数和变量的使用可以在其声明之前,这到底是 ...

随机推荐

  1. WebAPI GET和POST请求的几种方(转发)

    WebAPI GET和POST请求的几种方式 GET请求 1.无参数get请求 一般get请求有两种写法,一种是$.get()   一种是$.ajax({type:"get"}), ...

  2. Android开发的十项注意

    随着移动平台的发展及其应用的不断改善,质量成为决定成败的关键.用户要求他们安装的应用响应快.性能好,如果某个应用不能提供卓越的功能和稳定的用户体验,那注定会被很快卸载: 尽管现在Android智能手机 ...

  3. 桌面虚拟化之XenDesktop7

    安装篇 1. 安装所需要的组件 2. 安装核心组件 配置篇 完整的部署 1. 打开Citrix Studio软件 2. 选择完整部署 3. 创建站点 4. 选择数据库(可以使用自己的或者默认使用自带的 ...

  4. 关于柯尼卡美能达bizhub250出现c2557错误解决方法

    打印机出现c2557代码的操作方法 1.         按效用/计数器键 英文是(Utility/Counter) 2.         看到有检查细息(Check Detail) 3.       ...

  5. BeanDefinition的Resource定位——3

    1.我们重点看看AbstractRefreshableApplicationContext的refreshBeanFactory方法的实现,这个refreshBeanFactory被FileSyste ...

  6. [Bootstrap]组件(四)

    导航条 移动设备上折叠(可开关),超过规定视口标签时候水平展开模式 依赖插件 注意点:导航条内元素过多或其他原因导致元素内元素宽度过长,会引起折行-->解决:a.减少导航内元素或者减少宽度  b ...

  7. 13款精彩实用的最新jQuery插件

    1.jQuery特色菜单 圆形动画菜单插件 jQuery是一个非常流行的WEB前端框架,尽管HTML5非常酷,但是如果HTML5结合jQuery的话就能实现更酷更实用的插件.今天分享的这款jQuery ...

  8. Netfilter深度解剖

         在网络上发现这个Netfilter写的很好的系列文章,为了便于后期寻找,特此标注下博客地址,感谢大大神提供.     ---------------------------分割线开始---- ...

  9. Windows Phone 8 蓝牙编程

    蓝牙是手机的近距离无限传输的技术,在之前的Windows Phone 7系统手机里面仅支持蓝牙耳机功能,并不支持蓝牙文件信息传输,那么在Windows Phone 8手机里面将全面支持蓝牙技术,并且提 ...

  10. linux命令之grep用法介绍

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...