hblmwl 2015-03-24 05:28 采纳率: 50%
浏览 3918
已采纳

求高手解答:出现警告标语: 从“double”到“float”截断。

我都是用float定义的,为什么程序编译时会说从double到float截断。代码如下

#include
using namespace std;
//#define float double

class po
{
public:
po(float x=0,float y=0);
void setpo(float,float);
float getx()const{return x;}
float gety()const{return y;}
friend ostream & operator<<(ostream &,const po &);
protected:
float x,y;
};
po::po(float a, float b)
{
x=a;y=b;
}
void po::setpo(float a, float b)
{
x=a;y=b;}

ostream &operator<<(ostream &output,const po &p)
{
output<<"["<<p.x<<","<<p.y<<"]"<<endl;
return output;
}
int main()
{
po p(3.5,4.6);
cout<<"x="<<p.getx()<<",y="<<p.gety()<<endl;
p.setpo(8.5,6.8);
cout<<"p(new):"<<p<<endl;
}

  • 写回答

2条回答 默认 最新

  • Mike江 博客专家认证 2015-03-24 07:01
    关注

    只是写个小数,编译默认把它当做 double 类型。
    如: double a = 3.14
    要想写成 float, 数字的后面要加一个 f , float a = 3.14f

    int main()
    {
    po p(3.5,4.6);
    // 改为 po p(3.5f,4.6f);
    cout<<"x="<<p.getx()<<",y="<<p.gety()<<endl;
    p.setpo(8.5,6.8);
    // 改为 p.setpo(8.5f,6.8f);
    cout<<"p(new):"<<p<<endl;
    }

    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?