为什么java.awt.Dimension对高度和宽度使用双精度?

为什么java.awt.Dimension对高度和宽度使用双精度?,java,image,Java,Image,发件人: 维度类封装组件的宽度和高度 (整数精度) 为什么不将它们表示为int或long 我认为这是因为超类Dimension2D声明了返回double的方法。对于大多数解决方案,整数是可以的,但如果要为矢量图形创建Dimension2D类型,必须以整数以外的形式返回维度。必须这样做,因为它的父类java.awt.geom.Dimension2D基于双精度。我相信最初的解释是维度通常是相对的,例如,图像的最左边缘是0.0,最右边缘是1.0(当然,垂直尺寸也是如此)。像素(或点)只是该范围内相对点

发件人:

维度类封装组件的宽度和高度 (整数精度)


为什么不将它们表示为
int
long

我认为这是因为超类Dimension2D声明了返回double的方法。对于大多数解决方案,整数是可以的,但如果要为矢量图形创建Dimension2D类型,必须以整数以外的形式返回维度。

必须这样做,因为它的父类
java.awt.geom.Dimension2D
基于双精度。

我相信最初的解释是维度通常是相对的,例如,图像的最左边缘是
0.0
,最右边缘是
1.0
(当然,垂直尺寸也是如此)。像素(或点)只是该范围内相对点的样本,因此,如果图像宽度为350像素,则该行的第210个像素位于维度范围上的点
0.6

当然,这只是所用数据类型背后的原因。实际上,这通常不适用,因为它不是从
0.0
1.0
的包含范围,而是从
0.0
[像素宽度]。而是使用0



附录:从
0.0
1.0
的范围对你来说应该是非常合理的,如果你稍微意识到的话。

你能详细说明为什么矢量图形需要整数以外的东西吗?矢量图形即使在缩放时也能保持形状。如果没有“颗粒度”,你可以将其大小增加10倍或更多。看看Esko的答案,它解释了尺寸不受像素的限制,因此可以实现非常好的缩放。遗憾的是,答案只是糟糕的API设计。没有什么好的理由。225个没有公认答案的问题?!:-P@PeterLawrey-我已多次尝试回顾过去的问题,并接受更多的答案。如果你发现任何你认为我应该接受答案的问题,请指出。如果没有人能回答我的问题,但我相信我现在知道答案,我会提供一个我接受的答案。希望这能帮助那些也想知道这个问题答案的人。@PeterLawrey-我也是。