#include<stdio.h>
void
main()
{
float
x,y
printf("print
a
price:");
scanf("%f",&x)
if(x<250)
y=0
else
if(x<500
&&
x>=250)
y=3%
else
if(x>=500
&&
x<1000)
y=5%
else
出错原因:
浮点数计算误差导致。经过几步循环之后,x并不精确等于0.6,而x/step+1也不是整数7,这样就会导致数组下标不是整数,所以会出错:
>> xx =
0.6000
>> num2str(x,'%.16g')
ans =
0.6000000000000001
>> num2str(0.6,'%.16g')
ans =
0.6
>> num2str(x/step+1,'%.16g')
ans =
7.000000000000001
MATLAB中的函数计算直接用数组运算就可以了,例如
x=0:0.1:2y=2*x
如果涉及到向量的乘、除、乘方运算,相应的运算符应使用点运算。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)