1  /  1  页   1 跳转 查看:523

关于double的问题

关于double的问题

我是一只菜鸟,请各位大虾帮忙看一下

#include<stdio.h>
#include<math.h>

viod math()
{  double x;
    scanf("%f",&x);
    printf("sqrt(%.1f)=%.2f",x,sqrt(x));
}

用double定义x,不管输入什么值,输出的结果都是sqrt(0.0)=0.00,
用flaot 定义x,输出的结果就正常,这是为什么?
 

回复:关于double的问题

格式输入不对 double型的输出输入格式应该是%lf
 

回复:关于double的问题

scanf好像不能输入双精度实数吧,如果你运行下面程序结果也是0.而改成float x就可以.说明跟scanf("%f",&x);输入有关,而上楼朋友说的用"%lf "格式是错的,在printf()中才能用.
#include<stdio.h>
#include<math.h>
main()
{  double x;
    scanf("%f",&x);
    printf("%.1f",x);
}
 

回复:关于double的问题



#include<iostream>
#include<math.h>

int main(int argc,char * argv[])
{
    double x;
    std::cin>>x;
    std::cout<<"sqrt("<<x<<")="<<sqrt(x)<<std::endl;
    return 0;
}


还真把我难住了,c++中的流也是将输入当作float型输入的,小数点后面只保留6位。
 
1  /  1  页   1 跳转

版权所有 程序员家园论坛   Sitemap

Powered by Discuz!NT 2.1.202    Copyright © 2001-2008 Comsenz Inc.
Processed in 0.03125 second(s) , 3 queries. 浙ICP备07502118号
返顶部