我正在尝试使用while循环减少而不使用while循环体内的标志值。我想知道为什么我从这段代码中得到一个无限循环。我不确定原因是因为整数是不可变的,而且它会不断被覆盖。
end_number = 500
i = 0
while i < end_number:
print("I'm decrementing in percentages of 10")
end_number = end_number - (end_number * 0.10)
答案 0 :(得分:3)
赋值渐近为零。
if (cursor != null) {
Log.i(AppConstants.APPUILOG,"cursor not null");
cursor.moveToFirst();
String[] from = new String[] new String[] {NAME,JOBTITLE,THUMBNAILURL};
int[] to = new int[] {R.id.textViewMain,R.id.textViewSub,R.id.contact_icon};
SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this, R.layout.contact_list_item, cursor, from, to);
mainListView.setAdapter(cursorAdapter);
}else {
Log.i(AppConstants.APPUILOG,"cursor is null");
}
将接近零,但永远不会到达那里。无论end_number = end_number - (end_number * 0.10)
有多小,它的90%仍会大于零。所以,你的循环永远不会退出。
这是抽象的,数学上正确的答案。由于浮点数学的限制,您的问题在细节上有点略有不同。当10%的end_number向下舍入为零时,有一个点,所以你有end_number
,而end_number永远保持在那个值。
答案 1 :(得分:1)
如果你运行循环和品脱end_number,你会看到它是0.所以你的循环永远不会退出..问题是每次不会达到0时自身小10%。
您需要更改作业。你需要做的是这个
end_number = tiny float - 0