小编gdf*_*osa的帖子

BigDecimal(double)构造函数的不可预测性

我最近在一个项目中开始使用Sonar,并且我得到了关于使用构造函数的PMD规则new BigDecimal(double val).当我阅读java文档时,我发现新的BigDecimal(double val)有些不可预测,我应该使用new BigDecimal(String val)哪个是可预测的.

这是javadoc所说的BigDecimal public BigDecimal(double val):

将double转换为BigDecimal,它是double的二进制浮点值的精确十进制表示形式.返回的BigDecimal的比例是最小值,使得(10scale×val)是整数.

笔记:

这个构造函数的结果可能有点不可预测.有人可能会认为new BigDecimal(0.1)用Java 编写创建的数字 BigDecimal恰好等于0.1(未缩放值为1,等级为1),但它实际上等于0.1000000000000000055511151231257827021181583404541015625.这是因为0.1不能精确地表示为double(或者,就此而言,作为任何有限长度的二进制分数).因此,传递给构造函数的值并不完全等于0.1,尽管有外观.

另一方面,String构造函数是完全可预测的:正如人们所期望的那样,write new BigDecimal("0.1")会创建一个BigDecimal与0.1完全相等的值.因此,通常建议优先使用String构造函数.

当必须将double用作a的源时BigDecimal,请注意此构造函数提供了精确的转换; 它不会产生与使用该Double.toString(double)方法将double转换为String 然后使用 BigDecimal(String)构造函数相同的结果 .要获得该结果,请使用静态 valueOf(double)方法.

为什么这个构造函数确实存在?心不是new BigDecimal(String val)能有这样的事?我new BigDecimal(double val)什么时候应该使用构造函数?

java

14
推荐指数
2
解决办法
4743
查看次数

在ServletOutputStream中写入字节时断管

执行此代码时,

ServletOutputStream out = response.getOutputStream();
out.write(bytes, 0, bytes.length);
out.flush();  
out.close();  
Run Code Online (Sandbox Code Playgroud)

我经常得到这个例外,我无法弄清楚它为什么会发生.

Caused by: ClientAbortException:  java.net.SocketException: Broken pipe
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:358)
    at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:354)
    at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:381)
    at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:370)
    at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
Run Code Online (Sandbox Code Playgroud)

我有一个在Linux服务器上运行的Web应用程序,在JBoss 4.2.3和MySQL下运行.

这是怎么造成的,我该如何解决?

java jboss servlets

13
推荐指数
1
解决办法
5万
查看次数

字体'Arial'不可用于JVM

我正在开发一个使用Jasperreports的Java项目.我在其他项目中使用相同的技术多次工作,在尝试在Unix环境中打印报告时遇到了同样的问题.

我的项目使用:

  • JBoss 4.2.3.GA
  • Java 1.6
  • Jasperreports 4.7.0

抛出的异常是:

net.sf.jasperreports.engine.util.JRFontNotFoundException: Font 'Arial' is not available to the JVM. See the Javadoc for more details.
Run Code Online (Sandbox Code Playgroud)

我找到了一个解决这个问题的常用解决方案,而且确实有效:

sudo apt-get install msttcorefonts
Run Code Online (Sandbox Code Playgroud)

但是,我想了解Jasper如何使用字体,以及如何搜索Unix环境中安装的字体.也许更好的问题是:JVM如何处理原生字体?谁能给我一个关于这个主题的详细解释?如何在运行时为JVM提供系统字体?

java jboss jvm jasper-reports

5
推荐指数
1
解决办法
3万
查看次数

尝试使用Maven调用声纳时发生ClassCastException

我正在尝试使用Maven 3.2.1和声纳Maven插件来分析项目,但是却收到ClassCastException。

我的项目是一个包含3个项目的多模块Maven项目。

这是我的命令行中的输出:

[ERROR] Failed to execute goal org.codehaus.sonar:sonar-maven-plugin:3.2:sonar (default-cli) on project: A type incompatibility occured while executing org.codehaus.sonar:sonar-maven-plugin:3.2:sonar: org.slf4j.impl.SimpleLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext
[ERROR] -----------------------------------------------------
[ERROR] realm =    plugin>org.codehaus.sonar:sonar-maven-plugin:3.2
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/var/lib/jenkins/.m2/repository/org/codehaus/sonar/sonar-maven-plugin/3.2/sonar-maven-plugin-3.2.jar
[ERROR] urls[1] = file:/var/lib/jenkins/.m2/repository/org/apache/maven/shared/maven-dependency-tree/1.2/maven-dependency-tree-1.2.jar
[ERROR] urls[2] = file:/var/lib/jenkins/.m2/repository/org/codehaus/plexus/plexus-utils/1.4.1/plexus-utils-1.4.1.jar
[ERROR] urls[3] = file:/var/lib/jenkins/.m2/repository/junit/junit/4.10/junit-4.10.jar
[ERROR] urls[4] = file:/var/lib/jenkins/.m2/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar
[ERROR] urls[5] = file:/var/lib/jenkins/.m2/repository/org/codehaus/sonar/sonar-batch/3.2/sonar-batch-3.2.jar
[ERROR] urls[6] = file:/var/lib/jenkins/.m2/repository/org/codehaus/sonar/sonar-core/3.2/sonar-core-3.2.jar
[ERROR] urls[7] = file:/var/lib/jenkins/.m2/repository/org/mybatis/mybatis/3.1.1/mybatis-3.1.1.jar
[ERROR] urls[8] = file:/var/lib/jenkins/.m2/repository/org/codehaus/sonar/sonar-update-center-common/1.3/sonar-update-center-common-1.3.jar
[ERROR] urls[9] = file:/var/lib/jenkins/.m2/repository/org/hibernate/hibernate-core/3.3.2.GA/hibernate-core-3.3.2.GA.jar
[ERROR] urls[10] = file:/var/lib/jenkins/.m2/repository/antlr/antlr/2.7.6/antlr-2.7.6.jar …
Run Code Online (Sandbox Code Playgroud)

java maven sonarqube

2
推荐指数
1
解决办法
2822
查看次数

标签 统计

java ×4

jboss ×2

jasper-reports ×1

jvm ×1

maven ×1

servlets ×1

sonarqube ×1