java - 加倍到 int 和加倍到 int
问题描述
我想知道Double
在我的示例中反转为 int 时发生了什么?
这个案子是对的
Double d = 123.13;
int i = (int)(Math.random()*d);
这个案子是错误的
Double d = 123.13;
int i = (int)(d);
错误信息:Inconvertible types;cannot cast'java.lang.Double'to'int'
我知道我可以d.intValue
用来做这个,但我只想知道上面两种情况有什么区别
解决方案
包装器类型只能转换为它包装的原始类型。
即您可以将 aDouble
转换为 a double
,但不能直接转换为 a int
。
第二个片段可以通过编译:
Double d = 123.13;
int i = (int)(double)(d);
在第一个片段中,您将一个基元(的类型为Math.random()*d
is double
)转换为一个int
,这是允许的。
推荐阅读
- sql-server - 我的网络服务、本地服务和本地系统帐户名称是什么?
- python - How do I attach new special methods to an instance, at __init__?
- ios - 通过键过滤数组的 NSArray 的语法
- azure - 尝试运行 Azure Tailspin 示例应用程序时出现错误 AADSTS50020
- flutter - 在 PageController 中模拟 nextPage() 和 previousPage() 的 Flutter ScrollPhysics
- javascript - 在 JS 中单击复选框发送一或零
- javascript - 如何让 inputRef 返回元素来自
? 尝试了我能想到的一切,它仍然是空的 - apache-kafka - 在 SASL 安全的 Confluent 服务器上启动 KSQL,出现错误“未为 JAAS 配置中的键 'â' 指定值”
- office-addins - 使用已经存在的 Web API 项目测试 Office 加载项时出现问题
- android - 当有多个生物识别传感器可用时,如何选择首选类型来使用?