我需要使用Java逐行读取大约5-6 GB的大文本文件.
我该怎么办?
在以下程序中,您可以看到每个值略小于.5向下舍入,除了0.5.
for (int i = 10; i >= 0; i--) {
long l = Double.doubleToLongBits(i + 0.5);
double x;
do {
x = Double.longBitsToDouble(l);
System.out.println(x + " rounded is " + Math.round(x));
l--;
} while (Math.round(x) > i);
}
Run Code Online (Sandbox Code Playgroud)
版画
10.5 rounded is 11
10.499999999999998 rounded is 10
9.5 rounded is 10
9.499999999999998 rounded is 9
8.5 rounded is 9
8.499999999999998 rounded is 8
7.5 rounded is 8
7.499999999999999 rounded is 7
6.5 rounded is 7 …Run Code Online (Sandbox Code Playgroud) 有没有办法以一种方式使用FileOutputStream,如果文件(String filename)不存在,那么它会创建它吗?
FileOutputStream oFile = new FileOutputStream("score.txt", false);
Run Code Online (Sandbox Code Playgroud) Java教程说创建一个Thread很昂贵.但为什么它很贵?创建Java Thread会使其创建成本高昂时究竟发生了什么?我认为这句话是正确的,但我只是对JVM中线程创建的机制感兴趣.
线程生命周期开销.线程创建和拆解不是免费的.实际开销因平台而异,但线程创建需要时间,将延迟引入请求处理,并且需要JVM和OS的一些处理活动.如果请求频繁且轻量级,就像在大多数服务器应用程序中一样,为每个请求创建新线程会占用大量计算资源.
来自Java Concurrency in Practice
作者:Brian Goetz,Tim Peierls,Joshua Bloch,Joseph Bowbeer,David Holmes,Doug Lea
打印ISBN-10:0-321-34960-1
使用反射创建对象而不是调用类构造函数会导致任何显着的性能差异吗?
我知道0.1十进制数不能用有限的二进制数(解释)精确表示,所以double n = 0.1会失去一些精度而不会完全正确0.1.另一方面0.5可以完全表示,因为它是0.5 = 1/2 = 0.1b.
已经说过,添加0.1 三次不会完全给出0.3以下代码打印是可以理解的false:
double sum = 0, d = 0.1;
for (int i = 0; i < 3; i++)
sum += d;
System.out.println(sum == 0.3); // Prints false, OK
Run Code Online (Sandbox Code Playgroud)
但是,如何增加0.1 五次才会给出确切的答案0.5呢?以下代码打印true:
double sum = 0, d = 0.1;
for (int i = 0; i < 5; i++)
sum += …Run Code Online (Sandbox Code Playgroud) Java是否有能代表每种数值数据类型的无穷大?它是如何实现的,以便我可以用它进行数学运算?
例如
int myInf = infinity; //However it is done
myInf + 5; //returns infinity
myInf*(-1); //returns negative infinity
Run Code Online (Sandbox Code Playgroud)
我尝试使用非常大的数字,但我想要一个合适的,简单的解决方案.
在以下示例中
int i = -128;
Integer i2 = (Integer) i; // compiles
Integer i3 = (Integer) -128; /*** Doesn't compile ***/
Integer i4 = (Integer) (int) -128; // compiles
Integer i4 = -128; // compiles
Integer i5 = (int) -128; // compiles
Integer i6 = (Integer) (-128); // compiles
Integer i7 = (Integer) 0-128; // compiles
Run Code Online (Sandbox Code Playgroud)
我不能施展-128,(Integer)但我可以施展(int) -128.
我一直认为它-128是int类型,并且它(int)应该是多余的.
行上的错误i3是
cannot find symbol variable Integer
Run Code Online (Sandbox Code Playgroud)
我尝试使用Java …
我知道Java没有指针,但我听说Java程序可以用指针创建,这可以由少数java专家完成.这是真的吗?
我如何在Java中使用极大数字进行计算?
我已经尝试long但最大限度为9223372036854775807,并且当使用整数时,它不能保存足够的数字,因此不够准确,无法满足我的需要.
有没有办法解决?
java ×10
double ×3
performance ×3
file-io ×2
biginteger ×1
casting ×1
concurrency ×1
file ×1
infinity ×1
integer ×1
io ×1
new-operator ×1
numbers ×1
optimization ×1
pointers ×1
precision ×1
reflection ×1
rounding ×1
syntax ×1
unsafe ×1