python负数取模_正负数取模计算总结

负数取模运算

转自

:http://loveli0917.blog.163.com

最近带的助教班中,有人问

负数怎么取模,故上网搜了一下,感觉下面这篇帖

子写得很不错,故拷过来借鉴下,原文:

http://ceeji.net/blog/mod-in-real/

最近在一道

Java

习题中,看到这样的一道题:

What

is

the

output

when

this

statement

executed:  System.out.printf(-7

%

3);

正整数的取余运算大家都很熟悉,

但是对于负数、

实数的取余运算,

确实给人很

新鲜的感觉。

于是我对此进行了一些探索。

我发现,

这里面还是颇有一点可以探

索的东西的。

自然数的取模运算

的定义是这样的(

定义

1

):

如果

a

d

是两个自然数,

d

非零,可以证明存在两个唯一的整数

q

r

,满

a = qd+ r

0

。其中,

q

被称为商,

r

被称为余数。

那么对于负数,

是否可以沿用这样的定义呢?我们发现,

假如我们按照正数求余

的规则求

(-7) mod 3

的结果,就可以表示

-7

(-3)* 3 +2

。其中,

2

是余数,

-3

是商。

那么,

各种编程语言和计算器是否是按照这样理解的呢?下面是几种软件中对此

的理解。

C++

(

G++

编译)

cout <

输出

-1

Java

(

1.6

)

System.out.println((-7) % 3); //

输出

-1

Python 2.6

>>>

(-7) % 3 //

输出

2

百度计算器

(-7) mod 3 = 2

Google

计算器

(-7) mod 3 =

2

有道计算器

(-7) mod 3 = -1

可以看到,

结果特别有意思。

这个问题是

百家争鸣

的。

看来我们不能直接把正数

的法则加在负数上。

实际上,

整数范围

内,

自然数的求余法则并不被很多人所

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值