当前位置: 首页 > 面试题库 >

Java四舍五入除法结果

楚俊逸
2023-03-14
问题内容

因此,我有一些代码可以通过将“理想”屏幕的大小除以用户屏幕的大小来将图形缩放到用户屏幕的大小。她是我在做什么的代码片段:

public void setScaleFactor(GameContainer ui) {
    scaleFactorWidth = 2880 / ui.getWidth();
    scaleFactorHeight = 1800 / ui.getHeight();

    System.out.println("Screen measured as: "
            + Integer.toString(ui.getWidth()) + "x"
            + Integer.toString(ui.getHeight()));

    System.out.println("Scale factors are: "
            + Double.toString(scaleFactorWidth) + " "
            + Double.toString(scaleFactorHeight));

    textScale = (scaleFactorWidth + scaleFactorHeight) / 2;

    System.out.println("Text scale is: " + Double.toString(textScale));
}

现在,如果我在计算机上(屏幕分辨率为1440x900的Mac Book pro)运行此程序,结果是“ scaleFactorWidth”设置为2.0,而“
scaleFactorHeight”设置为2.0,这是预期的,因为我的屏幕正好是一半目标的大小。但是,如果在具有不同分辨率屏幕的计算机上运行此代码,则scaleFactors似乎会被四舍五入,我在1024x600的屏幕上进行了测试,并且在应将“
scaleFactorWidth”设置为2.0时将“ scaleFactorHeight”设置为3.0。已经是2.8125 x 3.0。

这是Java中的某种舍入错误吗?如果是的话,我该如何解决?

编辑: 感谢所有的帮助,我意识到我非常愚蠢,因为我需要做的只是将.0添加到2880和1800。


问题答案:

在这些行中

scaleFactorWidth = 2880 / ui.getWidth();
scaleFactorHeight = 1800 / ui.getHeight();

计算本身是基于整数的(根据的后续html" target="_blank">调用Integer.toString())。然后只将结果强制转换为double

为了使实际的计算使用double值,请改用以下代码:

scaleFactorWidth = 2880.0 / ui.getWidth();
scaleFactorHeight = 1800.0 / ui.getHeight();

要么

scaleFactorWidth = 2880.0 / (double)ui.getWidth();
scaleFactorHeight = 1800.0 / (double)ui.getHeight();


 类似资料:
  • 本节讨论了精度数学的四舍五入特性,ROUND()函数,以及插入DECIMAL列时的四舍五入特性。 ROUND()函数的行为取决于其参量是准确的还是近似的: ·对于准确值数值,ROUND()采用“半值向上舍入”规则:如果小数部分的值为.5或更大,如果是正数,向上取下一个整数,如果是负数,向下取下一个整数(换句话讲,以0为界限执行舍入)。如果小数部分的值小于.5,如果是正数,向下取下一个整数,如果是负

  • 问题内容: 我怎么总是将a舍入为一个,而不舍入它。我知道,但是我希望它总是四舍五入。因此,如果为,则四舍五入为4。 问题答案: 您可以使用方法。 请参阅JavaDoc链接:https ://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#ceil(double ) 从文档: 细胞 返回大于或等于自变量且等于数学整数的最小(最接近负无穷大

  • 本文向大家介绍php实现四舍五入的方法小结,包括了php实现四舍五入的方法小结的使用技巧和注意事项,需要的朋友参考一下 本文实例总结了php实现四舍五入的方法。分享给大家供大家参考。具体分析如下: php实现四舍五入的三种方法,分别通过number_format函数、round函数和sprintf格式化输出的方法实现四舍五入 1.number_format 方法实现四舍五入 2.round方法实现

  • 本文向大家介绍java中DecimalFormat四舍五入用法详解,包括了java中DecimalFormat四舍五入用法详解的使用技巧和注意事项,需要的朋友参考一下 DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。它可以支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额

  • 我有一个Java BigDecimal表达式,如下所示: 哪里 BigDecimal totalCase = BigDecimal。零;BigDecimal totalPrep = BigDecimal。零; 我必须将totalPrep除以totalCase,结果乘以100,得到以%表示的结果值。66.6666666666666666666666666666666666667 假设总准备是二进制2

  • 有人能告诉我怎么打双人球吗 e、 g.从双倍值55.6666666666667开始-四舍五入到双倍值56.0000000000- 或者从55.333333333333开始-四舍五入到55.0000000000的两倍- 谢谢。