double型浮点数能精确到多少位小数?

问题2:double型浮点数能精确到多少位小数?或者,这个问题本身值得商榷?

既然double是浮点数,它的小数点的位置是“浮动”的,所以很难说double类型能精确到小数点后面几位。通常这个关于精度的问题都是通过它能表示的有效数字(十进制)的位数来表示的。遵循IEEE标准的8字节(64位)的double能表示的有效数字的位数是:15 ~ 16

测试一个:

#include <stdio.h>
int main(){
    printf("%.20lf",1.0/3.0);
}

结果:

可见在第17位小数(有效数字)处数字发生了失真,所以应该是16位

问题3:double型浮点数最大正数值和最小正数值分别是多少?(不必特别精确)

这种方法几乎算不出:

#include <stdio.h>
int main(){
    double a = 0, b = 0;
    while(a<=b){
        a = b;
        b++;
    }
    printf("%f",a);
}

问题4:逻辑运算符号“&&“,”||“,”!“ 的相对优先级是怎样的?

#include <stdio.h>
int main(){
    int a = 0, b = 1, c = 1;
    printf("%d",a&&b||c);
}

输出为1, 可见&&>||

#include <stdio.h>
int main(){
    int a = 0, b = 0;
    printf("%d",!a&&b);
}

输出为0, 可见!> &&

综上!>&&>||

另外注意C语言中的逻辑运算符都是短路运算符,一旦能够确定整个表达式的值,就不再继续计算

double型浮点数能精确到多少位小数?

时间: 2024-10-27 04:47:32

double型浮点数能精确到多少位小数?的相关文章

C语言浮点数除法可以精确到多少位小数

double型的两个数相除,得到的浮点数能精确到多少位呢..用我家电脑做了个实验,编译器是Code::Blocks 13.12. 然后用电脑自带的计算器算的结果和C语言算的结果比较如图. 第一例里a=199000007,b=3030337,得到的答案在小数点后第14位(我没数错吧)开始不同了. 第二个例子里a=202033320333,b=1234567,在小数点后第11位开始不同了. 所以浮点数除法精确的位数是不固定的.

sql中保留2位小数

问题: 数据库里的 float momey 类型,都会精确到多位小数.但有时候 我们不需要那么精确,例如,只精确到两位有效数字. 解决: 1. 使用 Round() 函数,如 Round(@num,2) 参数 2 表示 保留两位有效数字. 2. 更好的方法是使用 Convert(decimal(18,2),@num) 实现转换,decimal(18,2) 指定要保留的有效数字. 这两个方法有一点不同:使用 Round() 函数,如果 @num 是常数,如 Round(2.3344,2) 则 会在

梁勇(Danniel Liang) java教材例题:java程序购买额按税率求营业税 java中数值保留2位小数的方法

package com.swift; import java.util.Scanner; public class PurchaseTaxDecimalsTwo { public static void main(String[] args) { Scanner scan=new Scanner(System.in);//扫描工作台输入 double purchaseAmount=scan.nextDouble();//输入数值赋值 购买额变量 System.out.println(purcha

SqlServer保留几位小数的两种做法

SqlServer保留几位小数的两种做法   数据库里的 float momey 类型,都会精确到多位小数.但有时候 我们不需要那么精确,例如,只精确到两位有效数字. 解决: 1. 使用 Round() 函数,如 Round(@num,2) 参数 2 表示 保留两位有效数字. 2. 更好的方法是使用 Convert(decimal(18,2),@num) 实现转换,decimal(18,2) 指定要保留的有效数字. 这两个方法有一点不同:使用 Round() 函数,如果 @num 是常数,如 R

(转)Sql Server 保留几位小数的两种做法

原文地址:http://blog.csdn.net/skyandcode/article/details/23523815 问题: 数据库里的 float momey 类型,都会精确到多位小数.但有时候 我们不需要那么精确,例如,只精确到两位有效数字. 解决: 1. 使用 Round() 函数,如 Round(@num,2)  参数 2 表示 保留两位有效数字. 2. 更好的方法是使用 Convert(decimal(18,2),@num) 实现转换,decimal(18,2) 指定要保留的有效

Java中的简单浮点数类型float和double不能够进行精确运算

在java中,简单的浮点类型float和double是不能够进行运算.我们先看下面的两个程序代码: 代码一: import java.util.Scanner; class Circle { double radius; static final double PI=3.14; public Circle(){this.radius=0;} public Circle(double r){this.radius=r;} public double getArea(){return PI*this

Java中double类型的数据精确到小数点后两位

Java中double类型的数据精确到小数点后两位 多余位四舍五入,四种方法 一: double f = 111231.5585;BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); 二: new java.text.DecimalFormat("#.00").format(3.1415926) 三: double d = 3.1415926

java double 保留两位小数

java保留两位小数问题: 方式一: 四舍五入  double   f   =   111231.5585;  BigDecimal   b   =   new   BigDecimal(f);  double   f1   =   b.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();  保留两位小数  ---------------------------------------------------------------   方

java.math.BigDecimal保留两位小数,保留小数,精确位数

http://blog.csdn.net/yuhua3272004/article/details/3075436 使用java.math.BigDecimal工具类实现 java保留两位小数问题: 方式一(四舍五入形式保留两位小数,注意模式ROUND_HALF_UP): 四舍五入   double   f   =   111231.5585;   BigDecimal   b   =   new   BigDecimal(f);   double   f1   =   b.setScale(2