- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想将 python 算法转换为 Java,我有这个源代码(使用并行赋值变量(在 Java 中不存在 :( )
# -*- coding: cp1252 -*-
#! /usr/bin/env python
import sys
def main():
k, a, b, a1, b1 = 2L, 4L, 1L, 12L, 4L
while 1:
p, q, k = k*k, 2L*k+1L, k+1L
a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1
d, d1 = a/b, a1/b1
while d == d1:
output(d)
a, a1 = 10L*(a%b), 10L*(a1%b1)
d, d1 = a/b, a1/b1
def output(d):
sys.stdout.write(`int(d)`)
sys.stdout.flush()
#ecriture en continue du chiffre
pi = open("flypi.html", "a")
pi.write(`int(d)`)
pi.write("\n")
pi.close()
main()
所以,首先我重新编写了没有并行赋值变量的相同脚本:
# -*- coding: cp1252 -*-
#! /usr/bin/env python
import sys
def main():
#k, a, b, a1, b1 = 2L, 4L, 1L, 12L, 4L
k = 2L
a = 4L
b = 1L
a1 = 12L
b1 = 4L
while 1:
#p, q, k = k*k, 2L*k+1L, k+1L
kk = k
p = kk*kk
q = 2L*kk+1L
k = kk+1L
#a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1
aa = a
bb = b
a = a1
b = b1
a1 = p*aa+q*a1
b1 = p*bb+q*b1
#d, d1 = a/b, a1/b1
d = a/b
d1 = a1/b1
while d == d1:
output(d)
#a, a1 = 10L*(a%b), 10L*(a1%b1)
a = 10L*(a%b)
a1 = 10L*(a1%b1)
#d, d1 = a/b, a1/b1
d = a/b
d1 = a1/b1
def output(d):
sys.stdout.write(`int(d)`)
sys.stdout.flush()
#ecriture en continue du chiffre
pi = open("flypi.html", "a")
pi.write(`int(d)`)
pi.write("\n")
pi.close()
main()
这两个脚本的输出是一样的:
31415926535897932384626433832795028841971693993751058209749445923078164062862089 (crt+c)
现在这是我用 Java 编写的脚本(几乎与第二个 python 脚本相同):
public static void cal(){
//int i = 0;
long d = 0;
long k = 2L;
long a = 4L;
long b = 1L, a1 = 12L, b1 = 4L;
long p = 0, q = 0, d1 = 0;
long aa = 0, bb = 0;
long kk = 0;
while(true){
kk = k;
p = kk*kk;
q = 2L*kk+1L;
k = kk+1L;
aa = a;
bb = b;
a = a1;
b = b1;
a1 = p*aa+q*a1;
b1 = p*bb+q*b1;
d = a/b;
d1 = a1/b1;
while(d == d1){
System.out.print(d);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
a = 10L*(a%b);
a1 = 10L*(a1%b1);
d = a/b;
d1 = a1/b1;
}
//i++;
}
}
但是输出是错误的:
31415926530000000001-100000000000000000100-300000101000000000000000000000000000000000000 (ctr+c)
谢谢,很抱歉发了这么长的帖子:)
编辑:所以是的,这是缓冲区溢出。我尝试实现 BigInteger 并且效果很好!谢谢!
最佳答案
在 Python 中整数可以是任意大的。在 Java 中,long 由 64 位组成,因此只能存储小于 2**64/2 的数字。
如果一个数字太大,它的前几位将被丢弃,最高有效位不是覆盖整数的符号,导致在数学上不可能的地方出现负数。
按照 ajb 的建议使用 BigInteger 或以某种方式更改您的计算。
关于java - 从python到java的并行赋值变量(Pi算法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30688460/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How to nest OR statements in JavaScript? 有没有办法做到这一点:
在 JavaScript 中有没有办法让一个变量总是等于一个变量?喜欢var1 = var2但是当var2更新,也是var1 . 例子 var var1 = document.getElementBy
我正在努力理解这代表什么 var1 = var2 == var3 我的猜测是这等同于: if (var2 == var3): var1 = var2 最佳答案 赋值 var1 = var2
这个问题已经有答案了: What does the PHP error message "Notice: Use of undefined constant" mean? (2 个回答) 已关闭 8
我在临时表中有几条记录,我想从每条记录中获取一个值并将其添加到一个变量中,例如 color | caption -------------------------------- re
如何将字符串转为变量(字符串变量--> $variable)? 或者用逗号分隔的变量列表然后转换为实际变量。 我有 2 个文件: 列名文件 行文件 我需要根据字符串匹配行文件中的整行,并根据列名文件命
我有一个我无法解决的基本 php 问题,我也想了解为什么! $upperValueCB = 10; $passNodeMatrixSource = 'CB'; $topValue= '$uppe
这可能吗? php $variable = $variable1 || $variable2? 如果 $variable1 为空则使用 $variable2 是否存在类似的东西? 最佳答案 PHP 5
在 Perl 5.20 中,for 循环似乎能够修改模块作用域的变量,但不能修改父作用域中的词法变量。 #!/usr/bin/env perl use strict; use warnings; ou
为什么这不起作用: var variable; variable = variable.concat(variable2); $('#lunk').append(variable) 我无法弄清楚这一点
根据我的理解,在32位机器上,指针的sizeof是32位(4字节),而在64位机器上,它是8字节。无论它们指向什么数据类型,它们都有固定的大小。我的计算机在 64 位上运行,但是当我打印包含 * 的大
例如: int a = 10; a += 1.5; 这运行得很完美,但是 a = a+1.5; 此作业表示类型不匹配:无法从 double 转换为 int。所以我的问题是:+= 运算符 和= 运算符
您好,我写了这个 MySQL 存储过程,但我一直收到这个语法错误 #1064 - You have an error in your SQL syntax; check the manual that
我试图在我的场景中显示特定的奖牌,这取决于你的高分是基于关卡的目标。 // Get Medal Colour if levelHighscore goalScore { sc
我必须维护相当古老的 Visual C++ 源代码的大型代码库。我发现代码如下: bIsOk = !!m_ptr->isOpen(some Parameters) bIsOk的数据类型是bool,is
我有一个从 MySQL 数据库中提取的动态产品列表。在 list 上有一个立即联系 按钮,我正在使用一个 jquery Modal 脚本,它会弹出一个表单。 我的问题是尝试将产品信息变量传递给该弹出窗
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: What is the difference between (type)value and type(va
jQuery Core Style Guidelines建议两种不同的方法来检查变量是否已定义。 全局变量:typeof variable === "undefined" 局部变量:variable
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: “Variable” Variables in Javascript? 我想肯定有一种方法可以在 JavaScrip
在语句中使用多重赋值有什么优点或缺点吗?在简单的例子中 var1 = var2 = true; 赋值是从右到左的(我相信 C# 中的所有赋值都是如此,而且可能是 Java,尽管我没有检查后者)。但是,
我是一名优秀的程序员,十分优秀!