gpt4 book ai didi

java - 使用yearTF.setText(String.format ("%.0f",year))时防止我的 double 向上舍入

转载 作者:行者123 更新时间:2023-11-30 07:54:52 24 4
gpt4 key购买 nike

我正在尝试尽可能准确地用 Java 编写这个计算器。它需要几秒钟,然后将其转换为年,然后分解天、小时、分钟和秒。我已经格式化了我的答案,以便我的文本字段仅显示整个数字。不幸的是,当我使用 % 提取余数以转换其余变量时,如果我的十分之一是 5 或更多,它会将我的答案四舍五入。这是 GUI 的,代码如下。我猜这是一个容忍问题。

private class CalculateButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
double inputSeconds, years, days, hours, minutes, seconds;


inputSeconds = Double.parseDouble(inputSecondsTF.getText());
years = inputSeconds / 60 / 60 / 24 / 365;
days = years % 1 * 365;
hours = days % 1 * 24;
minutes = hours % 1 * 60;
seconds = minutes % 1 * 60;

yearsTF.setText(String.format("%.0f", years));
daysTF.setText(String.format("%.0f", days));
hoursTF.setText(String.format("%.0f", hours));
minutesTF.setText(String.format("%.0f", minutes));
secondsTF.setText(String.format("%.0f", seconds));


}

}

最佳答案

 yearsTF.setText(String.format("%d", (int)years));
daysTF.setText(String.format("%d", (int)days));
hoursTF.setText(String.format("%d", (int)hours));
minutesTF.setText(String.format("%d", (int)minutes));
secondsTF.setText(String.format("%d", (int)(seconds+0.5)));

如果使用此方法,数字应向下舍入。在 setText 之前, double 会转换为整数(例如,4.98 变为 4,4.32 也变为 4)。

我为秒添加了“+ 0.5”,因为我们希望它向上舍入。因此,如果还剩 58.7 秒,将会发生以下情况:58.7 + 0.5 = 59.2 -> 转换为 59。

这也有效:

 yearsTF.setText(String.format("%d", (int)years));
daysTF.setText(String.format("%d", (int)days));
hoursTF.setText(String.format("%d", (int)hours));
minutesTF.setText(String.format("%d", (int)minutes));
secondsTF.setText(String.format("%.0f", seconds));

关于java - 使用yearTF.setText(String.format ("%.0f",year))时防止我的 double 向上舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32800065/

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