float和double型数据的输出

#include<cstdio>
#include<cstdlib>

int main()
{
    double  a=1.55555;
    printf("%.1lf %.2lf %.3lf",a,a,a);
    return 0;
}

输出:1.6 1.56 1.556

小数存在着四舍五入,在精度范围内,要求保存的位数的后一位会自动舍入。

时间: 2024-10-11 04:26:33

float和double型数据的输出的相关文章

float与 double型数据存储---IEEE浮点数表示法

目前C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算. 这种结构是一种科学计数法,用符号.指数和尾数来表示,底数定为2--即把一个浮点数表示为尾数乘以2的指数次方再添上符号.下面是具体的规格:               符号位     指数部分    尾数       长度float           1             8              23          32double       1            11      

Java中浮点型数据Float和Double进行精确计算的问题

一.浮点计算中发生精度丢失  大概很多有编程经验的朋友都对这个问题不陌生了:无论你使用的是什么编程语言,在使用浮点型数据进行精确计算时,你都有可能遇到计算结果出错的情况.来看下面的例子. // 这是一个利用浮点型数据进行精确计算时结果出错的例子,使用Java编写,有所省略. double a = (1.2 - 0.4) / 0.1;System.out.println(a); 如果你认为这个程序的输出结果是“8”的话,那你就错了.实际上,程序的输出结果是“7.999999999999999”.好

C#中对于float,double,decimal的误解(转载)

浮点型 Name CTS Type Description Significant Figures Range (approximate) float System.Single 32-bit single-precision floating point 7 ±1.5 × 10−45 to ±3.4 × 1038 double System.Double 64-bit double-precision floating point 15/16 ±5.0 × 10 −324 to ±1.7 ×

Java随笔:float、double精确性

通常会用float.double进行货币的计算. 下面这个计算会输出什么? System.out.println(2.00 - 1.10); 开始以为会是0.90,实际结果是:0.8999999999999999 原因在于,不是所有的小数都可以用二进制浮点精确地表示. 如何改造呢? 用int.long进行计算,再转换为浮点数. 用BigDecimal进行计算. System.out.println(new BigDecimal("2.00").subtract(new BigDecim

float及double类型减法运算时精度丢失问题

当float和double类型在进行减法运算时,会出现精度丢失问题,这种问题主要是由于计算机中普遍使用2进制所造成的.在此做为记录,防止日后遗忘.     public static void main(String[] args) {         float a = 2.1f;         float b = 2.0f;         float c = a - b;         System.out.println("a-b=" + c);     }     //输

【转】JAVA程序中Float和Double精度丢失问题

原文网址:http://blog.sina.com.cn/s/blog_827d041701017ctm.html 问题提出:12.0f-11.9f=0.10000038,"减不尽"为什么? 来自MSDN的解释: http://msdn.microsoft.com/zh-cn/c151dt3s.aspx 为何浮点数可能丢失精度浮点十进制值通常没有完全相同的二进制表示形式. 这是 CPU 所采用的浮点数据表示形式的副作用.为此,可能会经历一些精度丢失,并且一些浮点运算可能会产生意外的结果

Java浮点数float和double精确计算的精度误差问题总结

1.float整数计算误差 案例:会员积分字段采用float类型,导致计算会员积分时,7位整数的数据计算结果出现误差. 原因:超出float精度范围,无法精确计算. float和double的精度是由尾数的位数来决定的.浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响. float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字: double:2^5

精确计算java中float和double的精度

[本文相关的代码放在github上,地址为:https://github.com/VigourJiang/StructuredFloat] Java中double类型的格式是遵循IEEE 754标准的.尽管数学意义上的小数是连续的,但double仅仅能表示其中的一些离散点,把这些离散点组成的集合记为S,S的大小还是有限的.如果要保存的小数P刚好在集合S内,那么double类型就能精确的表示P:否则double类型只能从集合S中找一个与P最近的离散点P'代替P. 以上表述对于float也成立.IE

java Float和Double 之间的相互转型问题

由于float 是单精度浮点小数,而double 是双精度浮点小数 单精度型能精确到七位,而双精度能精确到15位.用户在选用这些数据类型时,要注意变量所取值的范围.并且数值为整数时,为了运算速度,不用把变量硬定义为浮点型. 如果要将Float和Double之间相互转型,java 提供了一下方法Float.doubleValue()和Double.floatValue() 查看JDK1.6中对其方法进行这样解释 Float.doubleValue() public double doubleVal