用vc++6.0测试ceil函数的用法,a=5,r=0.4为什么ceil(a*r)=3而ceil(5*0.4)=2?

Python018

用vc++6.0测试ceil函数的用法,a=5,r=0.4为什么ceil(a*r)=3而ceil(5*0.4)=2?,第1张

ceil(n),取不大于n的整数。

C/C++在计算浮点数时都默认按double型,对floa而言,只是在输出、输入时由double截断形成。你的代码中ceil(a*r)由于最高类型级别是float型,所以是把a*r的积按float处理了,精度要比double差了许多。而ceil(5*0.4)是按默认的double型来处理积的,精度就高多了。它们看起来都是0.2,但ceil函数要求一个double型参数,传给它float型类型不匹配,出错有时很难准确分析。若把r的类型由float改为double,相信输出应该是一样的。

C语言中sqrt()意思是平方根函数,计算一个非负实数的平方根。 在VC6.0中的math.h头文件的函数原型为double sqrt(double number)。sqrt()函数的输入参数不允许为负数,若输入赋值作为函数入参,将得不到正确的结果。因此在调用函数之前,应检查函数输入参数。

扩展资料:

sqrt()函数的输入参数必须以double类型输入,函数返回类型为double型,因此必须使用double型的变量来进行接收返回的数值。当输入数据不是double型时,应使用强制类型转换,将其转换为double类型。

在函数接收引用的数值时,应该用  %lf 来表示,否则,将会在输入或输出时出现数据错误,尤其是在数据输入的时候,会直接导致数据出错。这也都主要是由于不同类型的数据存储和读取的方式不同导致的。

(1)没有 °符号的都是弧度制,换句话说,角度制一定有 °

(2)在高中数学中,若没有特殊说明,都习惯用弧度制表示,弧度和角度的转换式为

角度=(180°/π)*弧度

c语言源代码如下:

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char*argv[])

{

    const double pi=3.14159

    int jd                             //角度值 

    double hd                          //弧度值 

    printf("请输入角度值:\n")

    scanf("%d",&jd)

    hd=jd*pi/180

    printf("对应的弧度值:%g\n",hd)

    system("pause")

    return 0

}