草庐IT

Double-checked

全部标签

java - 位串 : checking if one bitstring is a subset of another

我将英文字母集表示为26位位串。第一位对应“a”,设置位对应“b”,依此类推。于是,字符串ab表示为11000000000000000000000000现在,给定两个位串,我想检查位串1是否是位串2的子集。也就是说,位串1在所有地方都有一个“1”,位串2也应该有一个“1”。这意味着string1中的所有字符也出现在string2中。有人可以告诉我执行此操作的最佳方法吗?我知道一个简单的方法如下:遍历bitstring1并检查bitstring2中的相应位。但是,我想知道是否可以使用一些位运算符以更有效的方式完成此操作 最佳答案 如果

java - long 和 double 值的原子读写

long和double读写操作不是原子的,因为它们的大小超过了cpu字的大小。那么如果我有64位机器,我可以得到long和double的原子读写操作吗? 最佳答案 socouldigetatomicreadandwriteoperationoflonganddoubleifihave64bitmachine?答案是“也许”。答案取决于JVM实现以及机器架构。引用自JavaLanguagedefinition17.7:Someimplementationsmayfinditconvenienttodivideasinglewritea

java - 如何获得架构支持的最小的 next 或 previous 可能的 double 值?

假设我有一个double变量d。有没有办法获取CPU架构支持的下一个或上一个值。举个简单的例子,如果值为10.1245125并且架构的精度固定为小数点后7位,那么下一个值将是10.1245126,而前一个值将是10.1245124。显然,在浮点架构上,这并不是那么简单。我将如何实现这一点(在Java中)? 最佳答案 实际上,IEEE754浮点架构使这很容易:由于标准,该函数称为nextafter几乎所有支持它的语言,这种统一性使我能够在对Java知之甚少的情况下写下你的问题的答案:Thejava.lang.Math.nextAfte

java - 在 Java 中异或两个 double

如何在JAVA中对两个double进行异或运算?简单的“^”不适用于double...我是否必须将double转换为二进制形式并按位进行?还是有其他办法? 最佳答案 如果你想按位执行此操作,则需要使用Double实用函数来获取long表示,然后在最后转换回double:doublec=Double.longBitsToDouble(Double.doubleToRawLongBits(a)^Double.doubleToRawLongBits(b)); 关于java-在Java中异或两个

java - 如何快速检查 double 是否适合 float ? ( java )

是否有一些算术或位运算可以检查double是否适合float而不会丢失精度。它不仅应该检查double范围是在float范围内,也就是没有尾数位迷路。再见P.S.:这在C#中解决了问题的一半:Howtocheckifadoublecanfitintoafloatwithoutconversiontoinfinity但我需要一个适用于Java的解决方案。 最佳答案 这个怎么样:doubled=...;if((double)(float)d==d){System.out.println(d+"fitsintofloat!");}想法很简

Java 8 Lambda 将 Number[][] 转换为 double[][]

Number[][]intArray=newInteger[][]{{1,2,3},{4,5,6},{7,8,9}};double[][]doubleArray=Arrays.stream(intArray).forEach(pArray->Arrays.stream(pArray).mapToDouble(d->d.doubleValue()).toArray()).toArray();我想将Number[][]转换为double[][]。上面的lambda不起作用,外部的toArray不编译。Arrays.stream(intArray):返回Integer[]的流forEach:

java - 将 Double 转换为 long 而不会丢失精确值

我有一个Double对象,它在转换为long值时丢失了准确的值。Doubled=1.14*100System.out.println(d.longValue());上面的语句将打印:113。我要打印114。 最佳答案 如果您需要使用Math.round的确切114值:doubled=1.14*100;System.out.println(Math.round(d)); 关于java-将Double转换为long而不会丢失精确值,我们在StackOverflow上找到一个类似的问题:

java - 获取 -1 和 1 之间的随机 double 值

我正在用Java创建一个神经网络,需要创建一个方法来初始生成随机权重。我需要创建一个返回-1和1之间的随机double值的函数,但不确定这样做的逻辑,因此非常感谢任何帮助。 最佳答案 您可以使用Random类的nextDouble()方法。Randomrng=newRandom();//togetadoublebetween-1and1returnrng.nextDouble()*2-1;//rng.nextDouble()isbetween0and1 关于java-获取-1和1之间的随

java - 为什么异常被命名为checked和unchecked?

为什么Java中的两种异常类型分别命名为“checked”和“unchecked”?这些名称背后的原因是什么? 最佳答案 如果您调用的方法声明为抛出已检查异常(例如IOException),编译器将检查您是否你要么捕获它,要么声明你重新扔掉它。同样,为了首先抛出此类已检查异常,编译器检查您是否已将其声明为方法签名的一部分。基本上,它有点像类型检查,不同之处在于方法可以抛出哪些异常。编译器不会对未经检查的异常执行任何检查-因此它们可以由任何方法抛出,而无需方法声明它们。 关于java-为什

c# - 是否有等效于 C#'s ' checked' 关键字的 Java?

是的,这是一段微不足道的代码,但我仍然想知道是否有内置的替代品。代码如下:/***Castxtoint,throwanexceptionifthere'slossofinformation*/publicstaticintsafeLongToInt(longx){intresult=(int)x;if(result!=x)thrownewRuntimeException("longdoesn'tfitinanint:"+x);returnresult;}C#中的代码为:intfoo;longbar=...;checked{foo=bar;} 最佳答案