【问题标题】:Greenfoot: Converting a double into an intenger; int cannot be dereferencedGreenfoot:将双精度数转换为整数; int 不能被取消引用
【发布时间】:2018-02-24 14:46:23
【问题描述】:

我想将任何双精度值转换为整数。 我知道逗号后面的部分会丢失。

import java.lang.*;

public int doubleToIntenger(double dbl){
    int intenger;
    intenger = intenger.intValue(dbl);
    return intenger;
}

但我在编辑器中收到此错误作为工具提示:

int cannot be dereferenced

【问题讨论】:

  • 你认为intenger 持有什么?它目前持有的价值或参考是什么?你觉得int intenger; 会做什么?
  • 这只是一个简单的声明。还是我误解了你的问题?
  • 你不能调用原始类型的方法。导入 java.lang.* 也没用。
  • 好的,谢谢 ;D 我在 java 方面不是很有经验。我必须找到一种将双精度数转换为整数的方法。这是我的第一个想法。
  • 您的第一个想法应该是在 google 上搜索“在 Java 中将 double 转换为 integer”。请注意,它的拼写是“整数”,而不是“整数”。尝试随机码不是一个有效的解决方案。

标签: java casting double greenfoot


【解决方案1】:

如果您只关心分数之前,只需将 double 转换为 int。
但要小心

double x = 1.999999;
int val = (int)x;// val will be 1

【讨论】:

  • 谢谢,这行得通。我已经尝试过强制转换,但出现错误。似乎是别的东西。
  • @phyyyl 如果 double 值来自算术运算,则必须在转换之前考虑一下。因为 1.0 *2 不一定是 2.0。可以是 1.99999998。浮点运算不会产生精确的结果。
  • 所以我应该先四舍五入然后再转换它?
  • @phyyyl 是的,你可以这样做,但四舍五入 1,51 将得到 2。如果你不想要这种行为,你可以使用 epsilon 算术。
  • 我会四舍五入到逗号后的第一个小数位。 1,51 -> 1,5 -> 1 ; 1,999 -> 2,0 -> 2
猜你喜欢
  • 1970-01-01
  • 2014-04-18
  • 2016-07-30
  • 2017-02-24
  • 2016-01-01
  • 2013-05-13
  • 2014-11-10
  • 1970-01-01
  • 2018-12-23
相关资源
最近更新 更多