Java - 比较 2 个浮点数(或双精度数)
Java - Comparing 2 floats (or doubles)
我有一个需要按宽度排序的 ArrayList,它存储为浮点数(.getWidth() returns 浮点数)
arrayPlaceholder.sort((m1,m2) -> font.getWidth(m2.getDisplayName()) - font.getWidth(m1.getDisplayName()));
我查看了文档并查看了我遇到的错误,很明显函数 .compare(),returns 只是一个 int。
有什么方法可以比较 2 个浮点数(或双精度数,因为我 可以 将浮点数转换为双精度数);在我的用法中?我看过其他帖子,但我不想硬编码这个过程。
简单:
(m1,m2) ->
Float.valueOf( // <- need object wrapper here (only)
font.getWidth(m1.getDisplayName()))
.compareTo(
font.getWidth(m2.getDisplayName())
)
Float#compareTo(java.lang.Float)
也可以:
(m1,m2) ->
Float.compare( //
font.getWidth(m1.getDisplayName()),
font.getWidth(m2.getDisplayName())
)
对于降序: Switch m1
with m2
(xOr in parameters (m2, m1) xOR 在 (lambda) 正文中。
我有一个需要按宽度排序的 ArrayList,它存储为浮点数(.getWidth() returns 浮点数)
arrayPlaceholder.sort((m1,m2) -> font.getWidth(m2.getDisplayName()) - font.getWidth(m1.getDisplayName()));
我查看了文档并查看了我遇到的错误,很明显函数 .compare(),returns 只是一个 int。
有什么方法可以比较 2 个浮点数(或双精度数,因为我 可以 将浮点数转换为双精度数);在我的用法中?我看过其他帖子,但我不想硬编码这个过程。
简单:
(m1,m2) ->
Float.valueOf( // <- need object wrapper here (only)
font.getWidth(m1.getDisplayName()))
.compareTo(
font.getWidth(m2.getDisplayName())
)
Float#compareTo(java.lang.Float)
也可以:
(m1,m2) ->
Float.compare( //
font.getWidth(m1.getDisplayName()),
font.getWidth(m2.getDisplayName())
)
对于降序: Switch m1
with m2
(xOr in parameters (m2, m1) xOR 在 (lambda) 正文中。