Java BigDecimal使用String构造函数进行错误,以使用ROUND_HALF_UP进行舍入

我正在尝试实现一个新的等级舍入到BigDecimal类,我得到一个可能的错误,我可能做错了。 下面的代码暴露了我的问题: public static void main(String[] args) throws IOException { BigDecimal valDouble = new BigDecimal(0.35); valDouble = valDouble.setScale(1, BigDecimal.ROUND_HALF_UP); System.out.println(valDouble.doubleValue()); // prints 0.3 BigDecimal valString = new BigDecimal(new String(“0.35”)); valString = valString.setScale(1, BigDecimal.ROUND_HALF_UP); System.out.println(valString.doubleValue()); // prints 0.4 } 我的疑问是,对于double和String构造函数,BigDecimal是不同的? 我无法理解这个’bug’,至少,我只是用一个简单的字符串concat来“解决”它,如下所示: BigDecimal valDouble = new BigDecimal(“” + 0.35); 什么可能导致这种奇怪的行为?

以编程方式创建带文本的SplashScreen的最佳示例

我需要以编程方式创建一个SplashScreen并向其添加文本(并更改它)。 大多数示例使用命令行参数。 有没有解决方案吗?

JRE包含在JDK与独立JRE之间

JDK中包含的JRE(位于jre文件夹内)与独立JRE之间有什么区别? 有没有?

Mysql使用corejava程序连接输出密码

我想连接到MySQL数据库。 在安装MySQL的时候,我没有给出任何密码,所以在我的程序中我做了同样的事情,但我在连接上遇到错误。 我正在使用属性文件来获取驱动程序,URL,用户名和密码。 请帮我。 这是我的代码: try { Class.forName(“com.mysql.jdbc.Driver”); con=DriverManager.getConnection(“jdbc:mysql://localhost:3306/easylibdb1″,”root”,””); } catch (Exception e) { System.out.println(“Got Error While Connecting To Database…!”); e.printStackTrace(); } 这是我的属性文件内容: driver=com.mysql.jdbc.Driver url=jdbc:mysql://192.168.1.51:3306/easylibdb1 user=root password=””

为什么java 8 lambdas允许访问非final类变量?

我理解为什么编译器不接受以下内容: class Foo { public Supplier makeSupplier() { String str = “hello”; Supplier supp = () -> return str; // gives the expected compile error because // str is not effectively final // (str is a local variable, compile-time error // as per JLS 15.27.2.) str = “world”; return supp; } } 令我困惑的是编译器接受以下内容,并且unit testing通过: class […]

Java中的memoization有哪些不同的技术?

我知道这个http://onjava.com/pub/a/onjava/2003/08/20/memoization.html但是还有什么吗?

Java运算符优先

由于Java中运算符优先级的原因,我感到很困惑。 我很久以前在教程中读到AND的优先级高于OR,这可以通过问题中提供的答案得到证实。 但是,我目前正在使用“Sun认证的Java 6程序员学习指南”来学习Java。 本书包含以下示例: int y = 5; int x = 2; if ((x > 3) && (y < 2) | doStuff()) { System.out.println("true"); } 我正在复制并引用编译器如何处理上述代码的解释: If (x > 3)为true ,并且(y < 2)或doStuff()的结果为true ,则打印”true” 。 由于短路&& ,表达式被评估为围绕(y < 2) | doStuff()括号 (y < 2) | doStuff() 。 换句话说,它被评估为&&之前的单个表达式和&&之后的单个表达式。 这意味着虽然| 优先级高于&& 。 是由于使用“非短路OR”而不是短路OR? 什么是真的?

制作客户端服务器java应用程序

我试图以客户端/服务器方式创建Java应用程序。 客户端是SWT中的GUI,它显示来自服务器的数据。 服务器连接到数据库。 好的,对不起,这是一个经典的问题,我确定,但我不知道如何开始。 在我工作的项目中,他们使用Proxy.newProxyInstance()实现了很多魔法,以透明地调用Glassfish服务器。 我不想使用Glassfish服务器。 我只想在简单的Java中使用简单的东西。 但代理的概念似乎很酷。 你有这样的想法或例子吗? 如何编写服务器部分来处理客户端的请求? 提前致谢 Fluminis

在数组声明int k,i和int k ,i;

在声明数组时,我们可以在标识符的任何一侧使用括号,但在这种情况下: int[] k,i; 和 int k[],i; 它将以两种不同的方式考虑。 那是第一个创建两个数组k和i。 第二个创建一个数组k和一个正常变量i。 这是什么行为? 编辑:在java中我们通常更喜欢第一种类型的声明。 但在这种情况下,我们无法在单个语句中创建数组和原始变量。

Webapp文件组织约定(开发结构)

对于我正在开发的webapps,我通常使用以下文件组织,因为我认为它尊重约定: src |– main |– resources | |– *.properties | |– *.xml | |– spring | |– applicationContext.xml (main application context config file) |– webapp |– WEB-INF |– spring | |– spring-mvc.xml (web application context config file, delegated to manage only the web part) | |– spring-security-http.xml (web security config) |– static | |– *.css […]