我正在为电阻编写一个类,我想给出一个公差数字,它会为该公差值吐出色带的颜色。我在其他int值上使用了相同的精确方法,但是这个 double 型不起作用,我也不知道为什么。谁能帮忙。我已经尝试过将'd'放在所有案例编号的末尾,以确保它们是 double 的,但这并不能解决问题,因此不会成为问题。

  public static String toleranceColor(double tolerance)
 {
  String band1 = null;
  switch (tolerance)
 {
  case 1: band1 = "BROWN"; break;
  case 2: band1 = "RED"; break;
  case 0.5: band1 = "GREEN"; break;
  case 0.25: band1 = "BLUE"; break;
  case 0.1: band1 = "VIOLET"; break;
  case 0.05: band1 = "GREY"; break;
  case 5: band1 = "GOLD"; break;
  case 10: band1 = "SILVER"; break;
  case 20: band1 = "NONE"; break;
  default: band1 = "INVALID TOLERANCE"; break;
 }
}

最佳答案

您的问题是您要在double情况下尝试使用switchswitch仅应用于离散值的问题,请考虑使用枚举代替或将值乘以100并将其转换为Integer

关于java - 在开关盒中使用 double 可能会失去精度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22081773/

10-11 14:23