所以我这个代码,基本上将简单的数学算法应用于变量。 rrdistance,qsdistance,heartrate给出了理想的值,而pamp和qamp则没有。我认为它会结束?据推测,在i = 1时,试验[1]的值为120,Pycoor [1]为102,Qycoor [1]为134. FINALBOXWIDTH(bitmap_Source)为10.
因此pamp的预期结果=((120-102)/ 10)* 0.1 = 0.18而qamp =((134-120)/ 10)* 0.1 = 0.14
我不明白为什么他们都显示pamp = 0.1和qamp = 0.1。
static int[] Pxcoor = new int[50];
static int[] Pycoor = new int[50];
static int[] Qxcoor = new int[50];
static int[] Qycoor = new int[50];
static int[] Rxcoor = new int[50];
static int[] Rycoor = new int[50];
static int[] Sxcoor = new int[50];
static int[] Sycoor = new int[50];
static int[] Txcoor = new int[50];
static int[] Tycoor = new int[50];
static int[] trial = new int[450];
public static int FINALBOXWIDTH(Bitmap src) { ...
}
private void StratBackgroundProcess() {
if (i >= 2) {
rrdistance += (((Rxcoor[i] - Rxcoor[i - 1]) / FINALBOXWIDTH(bitmap_Source)) * 0.04);
//durations in seconds
printerval += (((Rxcoor[i] - Pxcoor[i]) / FINALBOXWIDTH(bitmap_Source)) * 0.04);
qsdistance += (((Sxcoor[i] - Qxcoor[i]) / FINALBOXWIDTH(bitmap_Source)) * 0.04);
heartrate += (1500 / (rrdistance / 0.04));
//amplitude in mV
pamp = (( (trial[1] - Pycoor[i]) / FINALBOXWIDTH(bitmap_Source)) * 0.1);
qamp = (( (Qycoor[i] - trial[i]) / FINALBOXWIDTH(bitmap_Source)) *0.1);
}
}
Pamp = pamp; Qamp = qamp;
coordinate.setText("" + pamp +"," + qamp +"");
答案 0 :(得分:3)
问题几乎可以肯定是试验,Pycoor,Qycoor和FINALBOXWIDTH项目的宣布。如果这些是整数(并且几乎肯定来自你的结果),那么:
((120-102)/ 10)* 0.1 =(18/10)* 0.1 = 1(注意整数数学向下舍入)* 0.1 = 0.1
现在,我实际上并不知道试用中的值,等等,因为你没有提供它们(好吧,你从那以后,它验证了我的工作),但是尝试将这两行更改为:< / p>
pamp = (( (trial[1] - Pycoor[i]) / (double)FINALBOXWIDTH(bitmap_Source)) * 0.1);
qamp = (( (Qycoor[i] - trial[i]) / (double)FINALBOXWIDTH(bitmap_Source)) *0.1);
注意我只是强制FINALBOXWIDTH为double类型,这将强制浮点运算。
请注意,您将获得双倍值,这些值并不总能很好地显示。试试这个:
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(pamp));
System.out.println(df.format(qamp));
答案 1 :(得分:-1)
这可能是因为您使用的数据类型
1.确保计算中涉及的所有变量的数据类型是float或double(或任何其他处理小数的数据类型,如Decimal,BigDecimal等)
2。每当在公式中使用浮点值时,都需要使用f指定它们。所以你的公式应该是
pamp = (( (trial[1] - Pycoor[i]) / FINALBOXWIDTH(bitmap_Source)) * 0.1f);
qamp = (( (Qycoor[i] - trial[i]) / FINALBOXWIDTH(bitmap_Source)) *0.1f);