2 qq 35843384 qq_35843384 于 2016.09.26 00:07 提问

int 怎么转换double求大神指点

#include
using namespace std ;
int main (void)
{
int a=1;
a=1.11;
cout <<a<<endl;
}
要如何使输出的a是以浮点数的形式输出。求大神指点,弄了一晚上了,都是输出的整数。

8个回答

caozhy
caozhy   Ds   Rxr 2016.09.26 00:21
已采纳
 int要想表示浮点数,也是可以的,不过需要一点技巧。比如
double d = 1.11;
int i = (int)(d * 100.0);
cout << i / 100 << "." << i % 100;

qq_36218230
qq_36218230   2016.09.26 12:43

通过强制转换试过吗?
1、C++的四种强制类型转换,所以C++不是类型安全的。
分别为:static_cast , dynamic_cast , const_cast , reinterpret_cast
2、四种转换的区别:
static_cast:可以实现C++中内置基本数据类型之间的相互转换。
const_cast: const_cast操作不能在不同的种类间转换。相反,它仅仅把一个它作用的表达式转换成常量。它可以使一个本来不是const类型的数据转换成const类型的,或者把const属性去掉。
reinterpret_cast: 有着和C风格的强制转换同样的能力。它可以转化任何内置的数据类型为其他任何的数据类型,也可以转化任何指针类型为其他的类型。它甚至可以转化内置的数据类型为指针,无须考虑类型安全或者常量的情形。不到万不得已绝对不用。
dynamic_cast: 其他三种都是编译时完成的,dynamic_cast是运行时处理的,运行时要进行类型检查。不能用于内置的基本数据类型的强制转换。dynamic_cast转换如果成功的话返回的是指向类的指针或引用,转换失败的话则会返回NULL。使用dynamic_cast进行转换的,基类中一定要有虚函数,否则编译不通过

qq_29594393
qq_29594393   Ds   Rxr 2016.09.26 00:27

a+=0.11自动转换,或者加一个double都行

Ouyangxiayun
Ouyangxiayun   2016.09.26 01:27

int a = 1;
cout << (double) a << endl;

Ouyangxiayun
Ouyangxiayun 不好意思,这个写法也不对,是错的。请看后面的图。
接近 2 年之前 回复
Ouyangxiayun
Ouyangxiayun   2016.09.26 01:37

图片说明

qq_35843384
qq_35843384 可是你这个本来就是浮点数了啊, 我想把int 整形数 经过强制换之类的输出浮点数。
接近 2 年之前 回复
u013132719
u013132719   2016.09.26 14:16

你可能需要的是格式化输出
```// setprecision example
#include // std::cout, std::fixed
#include // std::setprecision

int main () {
double f =3.14159;
std::cout << std::setprecision(5) << f << '\n';
std::cout << std::setprecision(9) << f << '\n';
std::cout << std::fixed;
std::cout << std::setprecision(5) << f << '\n';
std::cout << std::setprecision(9) << f << '\n';
return 0;
}


yao166164474
yao166164474   2016.09.26 23:45

double (a)=1.11;
printf("%lf",double(a));或cout<<double(a);


leewers
leewers   2016.09.26 00:09

你把一个浮点数得常量付给整形变量,整形变量会舍弃掉小数部分,当然无法输出浮点数了

double a = 1.11;
cout << a << endl;

qq_35843384
qq_35843384 我把int a 型数据 强制转换成double型,然后在给a赋值浮点数,可是这样输出的a还是整形。
接近 2 年之前 回复
Ouyangxiayun
Ouyangxiayun 回复qq_35843384: 本来就不是浮点类型的数据,怎么可以输出成浮点数,这就好比拿一个鸭蛋放到鸡窝里,然后就说这是一个鸡蛋,这是行不通的。leewers的做法是对的。如果实在想在输出形式上有体现成浮点型数据,可以直接在前面加 double;
接近 2 年之前 回复
leewers
leewers 回复qq_35843384: 首先明确一点,int类型得变量无法存储小数部分,即使将1.11赋值给a,a的值也会舍弃掉小数部分,只保留1.不知道你的意思是不是要以浮点数得形式输出,比如说a = 2时输出2.00,如果是这样得话可以使用iomanip头文件的setprecision函数;如果你的意图纯粹是想用a来存储一个浮点数1.11,那么caozhy的方法是可取的
接近 2 年之前 回复
qq_35843384
qq_35843384 我想强制转换 把 int a; 的a 输出成 浮点数。
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
北邮数值与符号计算实验 数值积分
1.1 double gauss_ch1(double(*f)(double), int n);求积分∫_(-1)^1 f(x)dx/√(1-x^2 ) 实现n点Gauss-Chebyeshev积分公式;返回积分的近似值。 在区间[-1,1]上关于权函数1/√(1-x^2 )的正交多项为T_n (x)=cos(narccos(x)),T_n (x)在[-1,1]上的n个根是x_k=cos⁡((2k-1)/2n π),k=1,…,n. n点Gauss-Chebyeshev积分公式为∫_(-1)^1 f(x)dx/√(1-x^2 )≈π/n ∑_(k=1)^n f(cos⁡((2k-1)/2n π)) 1.2 double gauss_ch2(double(*f)(double), int n); 求积分∫_(-1)^1 √(1-x^2 ) f(x)dx 实现n点Gauss-Chebyeshev II型积分公式;返回积分的近似值。 在区间[-1,1]上关于权函数√(1-x^2 )的正交多项为U_n (x)=sin⁡((n+1)arccos⁡(x))/sin⁡(arccos⁡(x)) ,U_n (x)在[-1,1]上的n个根是x_k=cos⁡(kπ/(n+1)),k=1,…,n. n点Gauss-Chebyeshev II型积分公式为 ∫_(-1)^1 √(1-x^2 ) f(x)dx≈π/(n+1) ∑_(k=1)^n sin^2 (kπ/(n+1))f(cos⁡(kπ/(n+1))) 1.3 double comp_trep(double (*f)(double), double a, double b);求积分∫_a^b f(x)dx 函数实现逐次减半法复化梯形公式;返回积分的近似值。 1.4 double romberg(double (*f)(double), double a, double b); 求积分∫_a^b f(x)dx 函数实现Romberg积分法;返回积分的近似值。 1.5 double gauss_leg_9(double (*f));求积分∫_(-1)^1 f(x)dx 实现9点Gauss-Legendre求积公式。 使用上面实现的各种求积方法求下面的积分:∫_(-1)^1 e^x √(1-x^2 ) dx (=∫_(-1)^1 (xe^x)/√(1-x^2 ) dx) 使用第3,4,5个函数求积分:∫_0^(π/2) sin⁡x dx (=1)
(地主源代码)求解! 做的不够好,求大神指点
(地主源代码)求解! 做的不够好,求大神指点
线性方程组的求解+LU&guass+QR&householder
bool lu(double* a, int* pivot, int n);//矩阵LU分解 bool guass(double const* lu, int const* p, double* b, int n);//求线性代数方程组的解 void qr(double* a, double* d, int n); //矩阵的QR分解 bool householder(double const*qr, double const*d, double*b, int n);//求线性代数方程组的解 实现两种线性方程组求解的方式,并且结果有误差的比对
char ,int,long,float,double,等在64位和32位下分别占多少字节
char ,int,long,float,double,等在64位和32位下分别占多少字节
C语言 矩阵相乘 矩阵转置
C语言 矩阵相乘 矩阵转置 //求转置矩阵 void Transpose2(double a[][MAXSIZE], double b[][MAXSIZE], int row, int col); void Transpose1to2(double a[MAXSIZE], double b[][MAXSIZE]); //显示矩阵 void displayMatrix(double a[][MAXSIZE], int row, int col, char b[]); //显示向量 void displayMatrix(double a[MAXSIZE], int col, char b[]); //高斯消元法 求逆矩阵 bool Gauss(double A[][MAXSIZE], double B[][MAXSIZE], int n); //矩阵乘以矩阵 void Matrix_Mult(double A[][MAXSIZE], double B[][MAXSIZE], double C[][MAXSIZE], int row1, int col1, int row2, int col2); //矩阵乘以向量 void MatrixV_Mult(double A[][MAXSIZE], double B[MAXSIZE], double C[MAXSIZE], int row1, int col1, int row2);
自制串口调试助手
自制串口调试助手,参照网上的代码资源,可以实现基本功能,求各路大神指点
人事资源管理系统
SSH框架+MySQL做的一个人事管理系统,需要的可以借鉴下,不足之处求大神指点
TXT在线小说管理器
不知道哪里写错了,各位大神帮忙指点下,告诉怎么进行修改
c++,二进制转换十进制
c++ 二进制转换十进制 double power(double x,int n) { double v=1; while(n--) { v=v*x; } return v; }
BigDecimal向Double转换
BigDecimal向Double转换