Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.
答案:1 悬赏:30 手机版
解决时间 2021-02-24 03:52
- 提问者网友:雪舞兮
- 2021-02-23 11:53
Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.
最佳答案
- 五星知识达人网友:拜訪者
- 2021-02-23 13:02
其实早就越界了。
for (digit = 0; num != 0; num /= 10) {
因为num是个double,所以num /= 10,会一直计算下去,要计算到精度实在达不到了,才会出现num = 0的情况而退出循环。
例如,在VC2003里调试上述程序,当退出for循环时,digit已经到10了。追问要怎么解决??追答不要直接将浮点数(float、double)与0用==比较。而是应该当浮点数的绝对值小于一定极限时,就认为它为0.
比如:
for (digit = 0; num != 0; num /= 10) {
改成:
for (digit = 0; fabs(num) >= 1e-4; num /= 10) {
for (digit = 0; num != 0; num /= 10) {
因为num是个double,所以num /= 10,会一直计算下去,要计算到精度实在达不到了,才会出现num = 0的情况而退出循环。
例如,在VC2003里调试上述程序,当退出for循环时,digit已经到10了。追问要怎么解决??追答不要直接将浮点数(float、double)与0用==比较。而是应该当浮点数的绝对值小于一定极限时,就认为它为0.
比如:
for (digit = 0; num != 0; num /= 10) {
改成:
for (digit = 0; fabs(num) >= 1e-4; num /= 10) {
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯