小编use*_*078的帖子

为什么这个奇怪的输出有truncate和BigDecimal?

我正在调用truncate方法来截断double值,以便在十进制之后应该有一个数字(没有四舍五入),
For Ex.truncate(123.48574) = 123.4.

我的截断方法是这样的

public double truncate (double x) {
    long y = (long) (x * 10);
    double z = (double) (y / 10);
    return z;
}
Run Code Online (Sandbox Code Playgroud)

除了这个奇怪的输出外,几乎所有的值都能正常工作.

double d = 0.787456;
d = truncate(d + 0.1); //gives 0.8 as expected. Okay.
Run Code Online (Sandbox Code Playgroud)

但,

double d = 0.7;
d = truncate(d + 0.1); //should also give 0.8. But its giving 0.7 only. 
                       //Strange I don't know why?
Run Code Online (Sandbox Code Playgroud)

事实上它适用于所有其他0.1,0.2,0.3,0.4,0.5,0.6, - ,0.8,0.9
我的意思,例如,

double d = 0.8;
d = …
Run Code Online (Sandbox Code Playgroud)

java double bigdecimal

10
推荐指数
2
解决办法
976
查看次数

我可以使重载方法同步吗?

我正在重写超类中的方法,但是我想要同步这个方法.是允许的吗?有什么可以替代?

java overriding synchronized

7
推荐指数
1
解决办法
99
查看次数

如何从队列中获取特定元素?

与之不同ArrayList,没有get(int index)方法Queue可以在指定位置检索元素.

有人请告诉我如何实现这个目标Queue

谢谢.

java collections

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

JVM Hotspot 上的 PrintAssembly 选项已启用,但未显示任何程序集跟踪

我正在使用 intel i386、Ubuntu 14。显示的 OpenJDK 版本信息$java -version

java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.2) (7u65-2.5.2-3~14.04)
OpenJDK Server VM (build 24.65-b04, mixed mode)
Run Code Online (Sandbox Code Playgroud)

正如此处提到的,我已将所需的二进制文件复制hsdis-i386.so到以下位置

/usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386/server
Run Code Online (Sandbox Code Playgroud)

/usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386/client
Run Code Online (Sandbox Code Playgroud)

然后我按照这个博客解决方法并尝试获取java程序的汇编代码。我使用下面的命令来测试示例 java 程序MyClass.java

java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -XX:PrintAssemblyOptions=hsdis-print-bytes -XX:CompileCommand=print,MyClass MyClass
Run Code Online (Sandbox Code Playgroud)

我在控制台上收到的消息是

OpenJDK Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output
CompilerOracle: unrecognized line "print Test"
c = 50
Run Code Online (Sandbox Code Playgroud)

哪里MyClass.java

public class MyClass{
  public static void main(String [] args){ …
Run Code Online (Sandbox Code Playgroud)

java jvm jvm-hotspot

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

什么是Scanner(新文件)和Scanner(新FileInputStream)之间的区别?

我观察到,Scanner当用于文件读取工作时,两个参数:FileFileInputStream.

Scanner scan = new Scanner(new File("myfile.txt")); 
Run Code Online (Sandbox Code Playgroud)

Scanner scan = new Scanner(new FileInputStream("myfile.txt"));
Run Code Online (Sandbox Code Playgroud)

但是,我不知道这两个定义之间的区别.是否有任何与性能相关的差异?哪一个更喜欢?

有人请解释一下.谢谢.

java file java.util.scanner

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