我有铸造问题;我有Java的经验,可以很容易地进行投射和打印:
int a = 1;
System.out.println((double)a);
并且上面的代码将打印1.0。
在C ++中,这种方法不起作用,我不明白为什么。
#include <iostream>
using namespace std;
int main(){
int a = 1;
cout << (double)a;
return 0;
}
问题是,这里我的输出是1而不是1.0,就像我期望的那样。
答案 0 :(得分:4)
将cout
设置为使用fixed表示法后,您可以使用setprecision
函数设置cout
对象的精度。
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int a = 1;
cout << fixed // setting notation
<< setprecision(1) // setting precision
<< (double)a; // print data
return 0;
}
输出(标准输出):
1.0
答案 1 :(得分:1)
您可以为浮点类型的cout输出指定精度和固定值。放:
cout << fixed << setprecision(2);
打印双打之前
完全正常的例子:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int a = 1;
cout << fixed << setprecision(2);
cout << (double)a << endl;
return 0;
}
答案 2 :(得分:1)
对我而言,将int
转换为double
是没有意义的,因为一旦您针对int
编写分数数据,它就会丢失。此外,如@Borgleader所述,我想尾随的零隐藏在C++
中。
但是,您可以使用您在自己展示的相同方法将float
或double
转换为int
或int
转换为char
,反之亦然代码。
float
或double
到int
,则小数数据将丢失1.234
将成为1
。 char
到int
,结果值将是该字符的ASCII值
即A
将成为65
,0
成为48
,反之亦然[{1}}成为97
。希望这个答案对你有所帮助。
答案 3 :(得分:0)
如果明确指定浮点格式化模式,则不保留尾随零。如果您使用科学模式或固定模式,它将被保留。您可以尝试获取
之类的零 int a = 1;
std::cout << std::fixed;
std::cout << std::setprecision(1);
std::cout << (double)a << "\n";
答案 4 :(得分:-1)
如果您使用的是C ++ 11或更高版本,可以将其转换为字符串
SELECT AdmissionReason FROM Episode
不幸的是,这不会让您控制格式,并会产生不必要的尾随零。你可以通过这样做摆脱这些:
SELECT COUNT(AdmissionReason) FROM Episode
WHERE AdmissionReason IS NULL;
一个问题是,如果你有“1.0”,那么它将产生“1”。