gpt4 book ai didi

Java 设置 double 值而不进行四舍五入

转载 作者:行者123 更新时间:2023-12-01 16:56:49 25 4
gpt4 key购买 nike

首先请注意,我在谷歌上找不到答案,所以这就是为什么这个问题非常简单

所以我试图制作一个 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。有人可以解释一下发生了什么事吗?

编辑我很抱歉。我真是太傻了。我正在查看仅显示 0 和 f 的特定部分。但我确实忘记了休息时间。

最佳答案

每个案例末尾都缺少break。它应该看起来更像

switch(hex[i - 2])
{
case('0'):
out[i - 2] = 0D;
break;
case('1'):
out[i - 2] = 0.066D;
break;
// ...
}

如果没有这些,程序就会从一个情况过渡到下一个情况,每个情况都会覆盖上一个情况的结果。由于最后一个案例的 out[i - 2] = 1.0D,这就是您始终从 switch 看到的结果。

关于Java 设置 double 值而不进行四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31575747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com