我有一个SQL数据库,其中包含一组具有唯一ID的表.我一直在使用唯一的Identifier数据类型并从我的C#接口传入一个guid.然而,为了查询速度的目的,我已经决定切换到使用bigint并传入很长时间.
什么是每次运行代码时创建唯一long的最简单方法,以便不重复ID?
在我最近的采访中,面试官问我,
write a Java program to find the least number whose square is of form 1_2_3_4_5_6_7_8_9_0. Where "_" could be any 1 digit number.
而且我坚持这一点.
任何人都可以帮助我实现逻辑吗?
我正在开发一个硬件接口应用程序,我想long用任意8 byte数字初始化数据类型值(因为它是dll文件中给出的固定键)示例:
long fixedKey=0123456701234567; //error on this line
Error is : The literal 0123456701234567 of type int is out of range
Run Code Online (Sandbox Code Playgroud)
我见过的原始数据类型(Java API)的范围long是从
-9,223,372,036,854,775,808到9,223,372,036,854,775,807(19位数).显然我输入的数字(16位数字)在long数据类型的范围内,所以为什么我会收到这种错误.
嗨,我有一个算法,我需要将操作应用于BigInt.
我知道可以使用Maths类操作BigInt,例如:
import java.math.*;
BigInteger a;
BigInteger b = BigInteger.ZERO;
BigInteger c = BigInteger.ONE;
BigInteger d = new BigInteger ("3");
BigInteger e = BigInteger.valueOf(5);
a.multiply(b);
a.add(b);
a.substract(b);
a.divide(b);
Run Code Online (Sandbox Code Playgroud)
我需要能够应用大于一段时间的条件,例如
while (a > 0) {
Run Code Online (Sandbox Code Playgroud)
这给了我一个语法错误,说"二元运算符'>'的错误操作数类型,第一种类型:java.math.BigInteger,第二种类型:int.
我还需要能够将modulo(%)运算符应用于BigInteger.
b = a % c;
Run Code Online (Sandbox Code Playgroud)
任何人都可以提出这样做的方法吗?
如果没有解决方案,那么我将不得不以某种方式使用reduce函数将我的BigInteger操作为一个独特的Long(这远非理想).
Silverzx.
为什么在我的下面的代码片段中没有按照我的预期打印长long值?
#include <stdio.h>
int main()
{
int x = 1363177921;
long long unsigned y = x * 1000000;
printf("y: %llu\n", y); // Why is 1363177921000000 not printed?
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我试图在ArrayList中进行二进制搜索,但binarySearch方法不适用于Long,以及Double和Float.我的代码是
import java.util.*;
public class BinarySearchInArrayList
{
public static void main(String[]args)
{
ArrayList<Long> ar = new ArrayList();
for(long l = 1;l<100000;l++)
{
ar.add(l);
}
System.out.println("arraylist: "+ar);
System.out.println("Which number's index do you want to know? ");
Scanner scan = new Scanner(System.in);
int p = scan.nextInt();
int index = Collections.binarySearch(ar,p);
System.out.println("number "+p+" has index "+index);
}
Run Code Online (Sandbox Code Playgroud)
当我使用Integer而不是Long,它工作正常,但我想用它Long.你能帮我吗?
在这种情况下,我在Map中有一个Object,我明确知道它包含一个Long实例,我需要将该值转换为字符串,但不断出现不兼容的类型错误.这是我的代码的样子:
Map<String, Object> map = ...;
Object obj = new Long(31415L);
String str = Long.valueOf((long)map.get("id")); //Problem line
Run Code Online (Sandbox Code Playgroud)
这给出了:
Inconvertible types.
Found : java.lang.Object
Required: long
Run Code Online (Sandbox Code Playgroud)
有关如何解决这个问题的任何建议吗?
为什么浮动首选精度?难道不是很大的整数来表示浮动给出的精度并且在所有机器上都是确定性的吗?例如,以浮点移动0.48124米的物体可以由以int或long移动48124微米的物体代表.
谁能解释下面两个println语句的输出之间的区别?
public class LongTest {
public static void main(String[] args) {
System.out.println(Long.toBinaryString(0xffff_ffff_ffff_ffffL));
System.out.println(java.lang.Long.toBinaryString(Long.MAX_VALUE));
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
1111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111
Run Code Online (Sandbox Code Playgroud)
第一行输出包含64位二进制数字.第二行仅包含63个二进制数字.
如果0xffff_ffff_ffff_ffffL大于Long.MAX_VALUE,我会发现编译器错误.但程序显然会编译,因此输出的差异必然是由于某些其他原因.
long long int a;
scanf("%lld",&a);
printf("n : %lld\n",a);
Run Code Online (Sandbox Code Playgroud)
输入是 9223372036854775808 (LLONG_MAX + 1)
但输出是 9223372036854775807 (LLONG_MAX)
x64 GNU/Linux和我使用GCC编译器