Tag: 数字

如何在Java中比较两个数字?

可能重复: 比较两个通用数字的值 我想比较两个任意的Number实例来找出哪个更大。 如您所知,这些可能是整数,长整数或双数,但也可能是BigIntegers或BigDecimals。 那么该怎么办? Number没有实现Comparable 。 不能使用doubleValue()因为BigDecimals或BigIntegers可能会丢失精度。 我是否真的必须进行实例测试和投射? 必须有一些库可以做到这一点。 但我已经检查过Apache Commons和Guava没有运气。 编辑1:评论指出了这一点: 比较两个通用数字的值 。 它有一个解决方案,使用toString()将所有内容转换为BigDecimal。 真的没有更好的办法吗? 编辑2:我刚刚发布了自己的版本作为另一个问题的答案 。 它应该比公认的答案更有效和更强大。

Java中的浮点数

任何人都可以请我为什么以下程序的输出不是“不同的”? public static void main(String[] args) { float f1=3.2f; float f2=6.5f; if(f1==3.2) System.out.println(“same”); else System.out.println(“different”); if(f2==6.5) System.out.println(“same”); else System.out.println(“different”); } o / p:不同的

在使用模式格式化货币时,是否使用正确的数字分隔符?

假设我有以下来格式化货币类型号码: 在英语中,一百万将是1,000,000,但在德国,它应该是1,000,000。 我的问题是:如果我使用上面的模式,JSF会知道指定语言环境的数字格式并自动使用正确的分隔符吗? 如果没有,如果您能告诉我如何格式化货币编号并同时指定正确的数字分隔符,我将非常感激。

是否有一个有效的整数分区算法,限制数量的部件?

我必须创建一个采用两个整数的方法,让它们为n和m ,并返回有多少种方法来求m正数来得到n 。 例如,像这个partition(6, 2)这样的方法调用应该返回3,因为有3种方法可能。 它们是5 + 1 4 + 2和3 + 3 。 顺便说一句, 4 + 2与2 + 4相同,因此该方法不应将它们视为两个不同的变化。 有人知道这个问题的解决方案吗? 更新: n和m不大于150。

Java中的radix参数是什么,它是如何工作的?

我知道函数Integer.parseInt()的基数是将字符串转换为的基础。 11基数10不应该用基数/基数16转换为B而不是17 ? 以下代码根据教科书打印17: public class Test { public static void main(String[] args) { System.out.println( Integer.parseInt(“11”, 16) ); } }

Swing配置JTextField只能接受数字吗?

可能重复: 有没有办法只接受JTextField中的数值? Swing的JTextField上有任何function只允许在一系列数字中使用正数吗? 示例:我只能输入10到30之间的数字。此范围之外的数字甚至不会出现在字段中。

Java中的数字是否有默认类型

如果我写这样的东西 System.out.println(18); 哪种类型有’18’? 是int还是byte ? 或者它没有类型吗? 它不能是int,因为这样的东西是正确的: byte b = 3; 这是不正确的: int i = 3; byte bb = i; //error! 编辑:我想我在Assignment Conversion的规范中找到了正确的部分: 常量的编译时缩小意味着代码如下: byte theAnswer = 42; 被允许。 如果没有缩小,整数文字42的类型为int的事实意味着需要转换为字节: byte theAnswer =(byte)42; //允许施放但不是必需的

JavaFX 8中带有TextFormatter和/或UnaryOperator的整数的数字TextField

我试图通过使用JavaFX 8的TextFormatter为整数创建一个数字TextField。 使用UnaryOperator解决方案: UnaryOperator integerFilter = change -> { String input = change.getText(); if (input.matches(“[0-9]*”)) { return change; } return null; }; myNumericField.setTextFormatter(new TextFormatter(integerFilter)); 使用IntegerStringConverter的解决方案: myNumericField.setTextFormatter(new TextFormatter(new IntegerStringConverter())); 两种解决方案都有自己的问题。 使用UnaryOperator,我只能按照预期输入0到9之间的数字,但我还需要输入负值,如“-512”,其中符号仅允许在第一个位置。 另外我不想要像“00016”这样的数字仍然可以。 IntegerStringConverter方法效果更好:不接受每个无效的数字,如“-16-123”,像“0123”这样的数字转换为“123”。 但转换仅在文本提交时(通过按Enter键)或TextField失去焦点时发生。 有没有办法在每次更新TextField的值时使用IntegerStringConverter强制转换第二个方法?

Java:通用方法和数字

我想制作一个通用方法,它可以得到一个数字List的总和。 我的尝试是这样的: public static T sumList(List data) { T total = 0; for (T elem : data) { total += elem; } return total; } 但问题是there is no += operator in T并且total can’t be assigned to zero 。 我怎样才能做到这一点? 谢谢

比较Java中的数字

在Java中,所有数字类型都从java.lang.Number扩展。 拥有如下方法是一个好主意: public boolean areEqual(Number first, Number second) { if (first != null && second != null) { return first.equals(second); } } 我担心双重2.00000不等于int 2的情况。这些是由内置等于处理吗? 如果没有,有没有办法在java中编写一个简单的数字比较函数? (apache commons等外部库都可以)