これを実行すると、main()でcoutは5.395を出力します。しかし、アサーションは失敗したと言っています!! これは本当に気が遠くなるようなことです、なぜこれが起こっているのですか?
#include <iostream>
#include <cassert>
using namespace std;
const float A = 1.6;
const float C = 1.55;
const float G = 2.2;
const float T = 1.23;
char empty[18];
int arraySize;
void copyArray(char sourceArray[], char targetArray[], int size) {
for(int i=0;i<size;i++) {
targetArray[i] = sourceArray[i];
}
}
double getAvgDensity(char aminoAcid) {
char aminoUpper = toupper(aminoAcid);
aminoToArray(aminoUpper);
double counter = 0;
int codonTotal = arraySize / 3.0;
if (arraySize == 0)
return 0;
else
{
for (int i = 0; i < arraySize; i++) {
counter += charToDouble(empty[i]);
}
return (counter / codonTotal);
}
}
int main()
{
cout << getAvgDensity('A') << endl; // prints 5.395
assert(getAvgDensity('A')==5.395);
return 0;
}
編集:すべての答えをありがとう、私はちょうど1000を掛け、intに変換し、doubleに戻し、1000で割った。:)