关于double与float的输入输出问题

在用c语言输入输出double与float类型的时候,例如:

#include<iostream>
#include<stdio.h>
using namespace std;
{
    float n;
    scanf("%f",&n);
    printf("%f\n",n);
}

#include<iostream>
#include<stdio.h>
using namespace std;
{
    double n;
    scanf("%lf",&n);//在输入时是lf输入;
    printf("%f\n",n);
}

原因:

先说printf的%f,为什么在double与float不同类型的时候,依旧是以这种格式的输出?这个根据“默认参数提升”规则,即其中有一条就是float型会被提升成double型,因此printf()只会看到双精度数,所以输出是都是%f;

而scanf,情况就会不同,它接受指针,这里直接通过指针指向所指的类型,float与double储存大不一样,因此区分%f以及%lf;

原文地址:https://www.cnblogs.com/fonddream/p/9787499.html

时间: 2024-10-10 00:43:53

关于double与float的输入输出问题的相关文章

Swift入门(九)——String与Int、Double、Float等数字相互转换

三种转换模式 任何语言里面,Int.float.double等数字类型自成一派,但它们和String类型之间的转换总是不太方便,这里总结一下它们相互转换的方法.总结下来一共有三种转换模式,分别举例说明. 一.String转数字 这里以String类型转Int类型为例.String转其他的数字类型(Float.Double等)大同小异.主要用到的方法是String类型的toInt方法.注意这个方法返回的是Int?,即一个整数可选类型.所以需要解封. var string = "1234"

double、float,哪个更快?

假设精度足够的情况下,double和float哪个更快? 有人说,float更快,因为需要处理的数据量少,有人说,double快,因为最终CPU在进行计算时需要先把float转换为double.真相如何呢? VC++的编译器设置里有三种浮点模型,这三种浮点模型有什么区别呢?对运算速度又有什么影响呢? 测试环境:Visual Studio 2013 update2,Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz 测试代码: #include "stdafx.h&qu

Double 与 Float 的值的比較结果

首先看geeksforgeeks上的两个程序: 程序1: #include<stdio.h> int main() { float x = 0.1; if (x == 0.1) printf("IF"); else if (x == 0.1f) printf("ELSE IF"); else printf("ELSE"); } 程序2: #include<stdio.h> int main() { float x = 0.

java用double和float进行小数计算精度不准确

java用double和float进行小数计算精度不准确 大多数情况下,使用double和float计算的结果是准确的,但是在一些精度要求很高的系统中或者已知的小数计算得到的结果会不准确,这种问题是非常严重的. <Effective Java>中提到一个原则,那就是float和double只能用来作科学计算或者是工程计算,但在商业计算中我们要用java.math.BigDecimal,通过使用BigDecimal类可以解决上述问题,java的设计者给编程人员提供了一个很有用的类BigDecim

Java double和 float丢失精度问题

详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt357 由于对float或double 的使用不当,可能会出现精度丢失的问题.问题大概情况可以通过如下代码理解: public class FloatDoubleTest { public static void main(String[] args) { float f = 20014999; double d = f; double d2 = 20014999; Syst

double 和 float

对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位.但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度). 1 范围 float和double的范围是由指数的位数来决定的. float的指数位有8位,而double的指数位有11位,分布如下: float: 1bit(符号位) 8bits(指数位

Java中如何解决double和float精度不准的问题

我们知道浮点数是无法在计算机中准确表示的,例如0.1在计算机中只是表示成了一个近似值,因此,对付点数的运算时结果具有不可预知性. 在进行数字运算时,如果有double或float类型的浮点数参与计算,偶尔会出现计算不准确的情况.如以下示例代码: package ex; public class BigDeciTest { public static void main(String[] args){ System.out.println(0.05+0.01); System.out.printl

Double 与 Float 的值的比较结果

首先看geeksforgeeks上的两个程序: 程序1: #include<stdio.h> int main() { float x = 0.1; if (x == 0.1) printf("IF"); else if (x == 0.1f) printf("ELSE IF"); else printf("ELSE"); } 程序2: #include<stdio.h> int main() { float x = 0.

String数据类型转换成long、int、double、float、boolean、char等七种数据类型

String c="123456"; //当String类型数据 要转换成int.double.float.long等数据类型时,其数据必须由数字构成, //当String类型数据由汉字或字母组成时转换成int.double.float.long等数据类型时,程序报错 //String类型转换成long类型 //String类型数据转换成long类型时 String类型的数据必须是数字构成 long n=Long.parseLong(c); System.out.println(&qu