注册 登录
编程论坛 C++教室

我是新手,请问怎样取整数,去掉小数点后面的数。谢谢!

SwanK 发布于 2013-01-18 13:26, 7596 次点击
写一个程序,读入一个球体的半径,计算出它的表面积和体积,然后打印
他们向下调整至最接近的整数。
定义一个常数,称为PI,并给它值3.14公式中使用的:

示例输出
半径为5
的表面积是:314
体积为:523
#include <iostream>

using namespace std;

int main()
{
    double radius;
    double surfaceArea;
    int volume;
    double PI;
    double a;
    double b;




    cout << "Program to compute and output the volume and surface area of a sphere" << endl;

     cout <<"Input radius:"<< endl;
    cin >> radius;
    PI  = 3.14;
    a=4;
    b=3;

    surfaceArea=4* PI * radius * radius;
    volume = a / b * PI * radius * radius *radius;


    cout << "Radius is: " << radius << endl;
    cout << "The surface area is:" << surfaceArea << endl;
    cout << "The volume is: " << volume << endl;


    return 0;
}

16 回复
#2
rjsp2013-01-18 13:30
你想要的是<math.h>中的 double floor( double x ); 吗?
#3
peach54602013-01-18 14:11
想保留几位小数就扩大10的多少倍取整
#4
SwanK2013-01-18 14:37
谢谢你们那么快的回复!

你看我的程序那里有错误,我刚开始学。
我还没学到“<math.h>中的 double floor( double x ); ”这里。2位
我不要小数位的,只要整数输出
什么叫calculates its surface area and volume then prints them rounded down to the nearest whole number?--这是题目要求。
请帮我看看 ,谢谢!
#5
羽VS翼2013-01-18 14:59
这还不简单,直接定义一个整数接受结果的值。直接输出就OK了!会有警告,但不会有问题。
例如:double i =3.13;
    int m = i;
    那么m的值就是3了
#6
羽VS翼2013-01-18 15:09
回复 5楼 羽VS翼
或者直接强转为整形:(int&)double
#7
rjsp2013-01-18 15:32
以下是引用SwanK在2013-1-18 14:37:23的发言:

谢谢你们那么快的回复!

你看我的程序那里有错误,我刚开始学。
我还没学到“中的 double floor( double x ); ”这里。2位
我不要小数位的,只要整数输出
什么叫calculates its surface area and volume then prints them rounded down to the nearest whole number?--这是题目要求。
请帮我看看 ,谢谢!
我还没学到“<math.h>中的 double floor( double x ); ”这里
------ 你学的是语法,而这是C/C++标准库中的函数。除了这个标准函数外,我想不到你还能用其他什么方法完成题目要求的功能。

什么叫calculates its surface area and volume then prints them rounded down to the nearest whole number?
------ 这句洋文还简单呀:计算它的表面积和体积,然后向下圆整到最近的整数后,打印出它们。
#8
张海锋2013-01-18 16:11
强制类型转换啊,还有那个PI常量的不是这样定义的吧
#9
SwanK2013-01-19 11:42
感谢你们的回帖。我改了了一下。你们看怎样?请指出错误!谢谢!
#include <iostream>
 
using namespace std;
 //name constants
   const double PI=3.14;
   const int top=4;
   const int base=3;

int main()
 {
  // declare variable
    double radius;
    double surfaceArea;
    double volume;

   //statements:step 1 - step7

    cout << "Program to compute and output the volume and surface area of a sphere" << endl;
 
     cout <<"Enter  radius:"<< endl;                      //step1
     cin >> radius;                                       //step2
     
     surfaceArea=4* PI * radius * radius;                  //step3
     volume = a / b * PI * radius * radius *radius;        //step4
     round(volume)                                         //step5   
   
     cout << "Radius is: " << radius << endl;              //step5
     cout << "The surface area is:" << surfaceArea << endl;//step6
     cout << "The volume is: " << volume << endl;          //step7  
 

    return 0;
 }
 
#10
SwanK2013-01-19 11:43
回复 9楼 SwanK
错了一点:
top=a
base=b
以上要改这2处。忘记了。
谢!
#11
SwanK2013-01-20 00:08
1。题目是rounded down to the nearest whole number- 如果 用int(volume) 是否合适,符合题意吗?
2。4/3在我程序中算不出正确的数字来 例如我用老师的:假如半径 =5。则 表面积 =314 (这个我可以算对了),体积=532  (这个无论怎么计算都得不出,只得392)
3。究竟怎样表示 4/3 ?

请高手给于帮助。谢谢!
#12
wp2319572013-01-20 08:26
程序代码:
#include<stdio.h>

#define PI 3.14

int main()
{
    int r=5;
    printf("半径为%d的球体的体积为%.0lf\n",r,(double)(4.0/3.0*PI*r*r*r));
    return 0;
}
很简单吧  这里给出的是c代码 不是c++
#13
rjsp2013-01-20 20:04
回复 12楼 wp231957
小伙子,啥牌子的烟?不抽烟的程序员不是个好程序员。
随便说两句:
a. 虽令printf不打印小数,但其结果本身是四舍五入后的结果。所以呀,你这个结果不能保证是向下圆整后的整数
b. %lf在scanf中才对应double,在printf中float和double都是用%f。
关于这一点多说点吧,%Lf对应于long double
C++标准中,printf中没有%lf,因此有的编译器会运行时报错,有点编译器会忽略。还有一些编译器会把printf中的%lf当成%Lf看待,比如gcc;还有一些编译器会把printf中的%lf当成%f看待,比如vc。所以呀,千万别在printf中用%lf
#14
wp2319572013-01-20 21:48
以下是引用rjsp在2013-1-20 20:04:44的发言:

小伙子,啥牌子的烟?不抽烟的程序员不是个好程序员。//偶不是程序员  也未必是小伙子
随便说两句:
a. 虽令printf不打印小数,但其结果本身是四舍五入后的结果。所以呀,你这个结果不能保证是向下圆整后的整数
//恩  这个用int强制转换就可以了吧
b. %lf在scanf中才对应double,在printf中float和double都是用%f。
关于这一点多说点吧,%Lf对应于long double
C++标准中,printf中没有%lf,因此有的编译器会运行时报错,有点编译器会忽略。还有一些编译器会把printf中的%lf当成%Lf看待,比如gcc;还有一些编译器会把printf中的%lf当成%f看待,比如vc。所以呀,千万别在printf中用%lf

//记住了 谢谢
#15
wp2319572013-01-20 21:49
哦 忘了  我偶尔吸烟
#16
rjsp2013-01-21 08:21
以下是引用wp231957在2013-1-20 21:49:09的发言:

哦 忘了  我偶尔吸烟

我和你相反,我是偶尔不吸烟^_^
#17
SwanK2013-01-28 02:13
谢谢你们的回答!
我看有3种方式。我用codeblock 试验了一下
4.0/3.0 ---最简单的方法
4/( float)3 -----也可以得出正确结果
或者在定义变量的时候就写上 int a= float 4/3 然后  v= a * PI * r * r *r 也可以的

你们说的C 和 C + + 真的有点不一样哎 , 能否直接给我C++的回答?不过 4.0/3.0 点到了问题解决关键!非常感谢!
如果我以上的想法有错误。请给于指正!
万分感谢!我很喜欢这里。


1