gpt4 book ai didi

java - 将 double 转换为 int (java)

转载 作者:行者123 更新时间:2023-12-02 04:03:54 25 4
gpt4 key购买 nike

我正在尝试编写一个程序来模拟太阳系。

for(int i=0;i<1000;i++) {
double X=(160*Math.cos((2*PI*i)/365));
double Y=(160*Math.sin((2*PI*i)/365));
posX=Math.round(X);
posY=Math.round(Y);
cadre.repaint();
sleep(200);
}
f.setVisible(false);

为了让我的行星绕着太阳转,我有一个公式;问题是我有一个带有这个公式的双数,我不能让他变成一个 int (我尝试了 Floor(X)、Math.round(X),不起作用(错误:不兼容的类型:可能有损)从 long 到 int 的转换)

[enter image description here ]

你会发现它并不是真正的java,但他作为Java工作(它是一些Javascool),所以你的建议可能对我有用!

最佳答案

当您将 double 转换为 int 时,编译器无法确定这是否是安全操作。您必须使用显式强制转换,例如

double d = ...
int i = (int) d; // implicitly does a floor(d);

在 Java 8 中,有一个函数可以帮助检测强制转换是否安全(至少从 long 来看)Math.toIntExact

int i = Math.toIntExact((long) d); // implicitly does a floor(d);

您可以将 GUI 事件循环作为定期任务运行来执行此操作。

 double X= 160*Math.cos(i * 2 * PI / 360); 
double Y= 160*Math.sin(i * 2 * PI / 360);
posX = Math.toIntExact(Math.round(X));
posY = Math.toIntExact(Math.round(Y));
cadre.repaint();
// note you have to return so the image can actually be drawn.

关于java - 将 double 转换为 int (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34577277/

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