Прежде всего обратите внимание, что я не мог найти ответ на Google, так что именно поэтому этот вопрос очень простJava установить значение двойной без округления
Так что я пытался сделать Java программы, предполагающей глядя на цвет пикселей в изображении и подключая его к нейронной сети.
Я сделал метод, чтобы попытаться превратить шестнадцатеричный код в вход для нейронной сети. (Это означает, что значения от 0 - 1)
public double[] toHex(int a)
{
char[] hex = Integer.toHexString(a).toCharArray();
double[] out = new double[6];
for(int i = 2; i < hex.length; i++)
switch(hex[i - 2])
{
case('0'):
out[i - 2] = 0D;
case('1'):
out[i - 2] = 0.066D;
case('2'):
out[i - 2] = 0.133D;
case('3'):
out[i - 2] = 0.2D;
case('4'):
out[i - 2] = 0.266;
case('5'):
out[i - 2] = 0.333D;
case('6'):
out[i - 2] = 0.4D;
case('7'):
out[i - 2] = 0.466D;
case('8'):
out[i - 2] = 0.533D;
case('9'):
out[i - 2] = 0.6D;
case('a'):
out[i - 2] = 0.666D;
case('b'):
out[i - 2] = 0.733D;
case('c'):
out[i - 2] = 0.8D;
case('d'):
out[i - 2] = 0.866D;
case('e'):
out[i - 2] = 0.933D;
case('f'):
out[i - 2] = 1.0D;
}
return out;
}
Но по какой-то причине, делая это всегда приводит либо 1,0 или 0,0, когда я смотрю на сгенерированный код. Может кто-нибудь объяснить, что происходит?
EDIT Извините. Я совершенно глуп. Я смотрел на конкретный раздел, который отображал только 0 и f. Но я все же забыл об этом.
Спасибо, я забыл об этом, но это что-то еще. Я вложил это, но он все еще только выводит либо «1.0», либо «0.0». В конце концов, это не имело бы смысла, если бы он сказал hex [i] - 2 == '0', а затем hex [i] - 2 == '1'. –