我是一名正在准备参加州学术会议(UIL)的高中生。我有一个问题,我到处寻找,似乎无法找到答案!为什么打印出0.0?
double d = 1/2;
System.out.println(d);
答案 0 :(得分:10)
这是因为数据类型。
当你执行整数除法1/2
因为两个操作数是整数时,它会解析为零(0.5向下舍入为零)。
如果将其中任何一个转换为double,您将获得双倍结果。
double d = 1d/2;
或
double d = 1/2.0;
答案 1 :(得分:1)
1和2都是整数,所以/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp: In member function ‘std::vector<T> ListLib<T>::convertToVector()’:
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp:15:3: error: need ‘typename’ before ‘std::list<T>::iterator’ because ‘std::list<T>’ is a dependent scope
std::list<T>::iterator itList;
^
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp:15:26: error: expected ‘;’ before ‘itList’
std::list<T>::iterator itList;
^
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp:17:8: error: ‘itList’ was not declared in this scope
for (itList = *listT->begin(); itList != *listT->end(); itList++)
^
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp:18:12: error: expected unqualified-id before ‘(’ token
result->(*itList);
^
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp:20:3: error: need ‘typename’ before ‘std::vector<T>::iterator’ because ‘std::vector<T>’ is a dependent scope
std::vector<T>::iterator itVec;
^
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp:20:28: error: expected ‘;’ before ‘itVec’
std::vector<T>::iterator itVec;
^
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp:21:8: error: ‘itVec’ was not declared in this scope
for (itVec = result.begin(); itVec != result.end())
^
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp:21:53: error: expected ‘;’ before ‘)’ token
for (itVec = result.begin(); itVec != result.end())
^
。在将结果分配给变量之前,结果不会转换为1 / 2 == 0
,但到那时为时已晚。如果您想进行浮动除法,请执行double
。
答案 2 :(得分:1)
因为1
和2
是int
值,所以根据java语言规范,对int
个操作数的算术运算结果是还int
。结果的任何非整数部分都被丢弃 - 即小数部分被截断,0.5
- &gt; 0
当int
分配给double
时,会自动从d
扩展到int
,但是对0
结果执行强制转换,这是一个整体号码double
。
如果&#34;修复&#34;问题是,通过添加&#34; d&#34;来设置其中一个操作数double d = 1d/2;
System.out.println(d); // "0.5"
。到数字文字:
double
根据语言规范,当算术运算的一个操作数为double
时,结果也为double d = 1/2.0;
System.out.println(d);
。
答案 3 :(得分:1)
导致1/2 = 0的结果,然后结果解析为double。你正在使用int而不是double。 我认为应该没问题:
public struct Array<Element> : CollectionType, MutableCollectionType, _DestructorSafeContainer {}
抱歉弱英语