![]() |
1
14
使用
|
![]() |
2
13
|
![]() |
3
9
我假设你的数字是64位的。如果不是,那么你需要一个 arbitrary-precision arithmetic library 例如 GMP . 因此,首先要做的是:
然后使用类型
编辑以添加: 在我写了这个答案之后,C++11添加了 <cstdint> header 它通常*定义std::int64_t和std::uint64_t,所以如果您有现代编译器,最好使用它们。 (*理论上,系统可能根本不支持64位类型。但实际上,在您可能遇到的任何系统上都支持64位类型)。 |
![]() |
4
7
在C++中没有可移植的方式,因为语言没有指定整数类型的大小(除了sisiof char是1)。您需要查阅编译器文档。 |
![]() |
5
3
两个建议都不好,因为长的不是标准的C++数据类型,而double是浮点。
|
![]() |
6
3
不要使用double,因为:
输出:
|
![]() |
7
2
但这不是标准。 |
![]() |
8
1
如果你不需要负数,无符号的long-long听起来是你能得到的最多的。 |
![]() |
9
1
尝试 TTMath . 您只需包含一个标头,然后声明一个bignum类型,例如:
它创建了一个可以保存0和2^(32*100)-1之间的无符号整数的类型。
那就用
刚刚意识到,lib仅适用于x86和x64,但在这些处理器上是跨平台的操作系统。 |
![]() |
10
1
当前很多C/C++编译器都有 stdint.h 或inttypes.h标头。
|
![]() |
11
1
您的程序应具有多大的可移植性?TR1有cstdint和stdint.h,所以大多数最新的编译器可能都支持它。然后是Boost cstdint.hpp,如果不支持cstdint,您应该可以使用它。 |
![]() |
12
0
双精度浮点运算。 也许你应该用long-long。我不知道哪个别名是首选别名。 |
![]() |
13
0
如果您的编译器没有long-long,您可以使用包含两个long的结构自己实现它们,但您需要小心进位等。当然,您可以寻找一种多精度算法,如 GMP |
![]() |
14
0
只是出于好奇——我认为如果你愿意,编写自己的代码不会太难。我的意思是,当然,所有这些数据类型都有预定义的结构,但是您可以使用
要保持一个非常大的数字,超出双精度的范围,创建一个包含两部分的对象-数字和十的幂, 所以,如果你想储存像这样的东西 1.1230123123 x 10^(1000000000000000000000000000000000),不受双精度支持,您可以使用1.123。。。部分存储在一个double中,然后十的幂作为一个单独的double/int/float(任意适合),然后从那里获取它。当然,这可能不是最好的方法——您可能需要为除法、减法等编写大量功能,但它肯定是可移植的,因为您将使用定义的正常数据类型。它的可用性将取决于您试图实现的目标,以及您是否计划在单个项目之外使用它,但我认为如果这些数字是绝对要求的话,这是一种可靠的方法 |
![]() |
Terio · Typescript:使用变量的值创建自定义类型 1 年前 |
![]() |
Kareem Adel · 创建函数类型(TypeScript接口) 2 年前 |
![]() |
MatÄj VondráÄek · 如何在c#方法中传递类型? 2 年前 |
![]() |
kreo · 为什么&[T]参数也接受&Vec? 6 年前 |
![]() |
Jiji · 将简单对象强制转换为简单的通用接口 6 年前 |