java - 如何找到 2 的 n 次方。 n 的范围从 0 到 200

标签 java c++ c

假设我的系统是 32 位机器。考虑到这一点,如果我对 n>63 使用 long int,我的值将变为 0。如何解决?

最佳答案

double 完全能够恰好 存储高达 1023 的 2 的幂。不要让别人告诉您 float 总是不准确。这是一个特殊情况,它们不是!

double x = 1.0;
for (int n = 0; n <= 200; ++n)
{
    printf("2^%d = %.0f\n", n, x);
    x *= 2.0;
}

程序的一些输出:

2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
...
2^196 = 100433627766186892221372630771322662657637687111424552206336
2^197 = 200867255532373784442745261542645325315275374222849104412672
2^198 = 401734511064747568885490523085290650630550748445698208825344
2^199 = 803469022129495137770981046170581301261101496891396417650688
2^200 = 1606938044258990275541962092341162602522202993782792835301376

关于java - 如何找到 2 的 n 次方。 n 的范围从 0 到 200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2763117/

相关文章:

Java 和 C : How can I compile this C source file into a DLL for use with Java?

C++ 奇怪的行为

c++ - 如何使用语言支持等进行 "light"构建的 GCC 修剪?

c - C语言中的[数组名]是什么意思?

c - 查找两个相交链表的公共(public)节点

c - C语言如何验证密码至少有一个大写、小写和数字?

java - 单个字母的字符串不匹配

java - GWT 垂直菜单

java - 将文件从 android/data 目录复制到内部存储

c++ - 如何对类定义中定义的模板成员函数使用显式模板实例化?