鱼C论坛

 找回密码
 立即注册
查看: 3388|回复: 15

关于小数相除取余的某些疑问

[复制链接]
发表于 2015-3-16 23:28:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我现在应该是在小甲鱼的前十几个视频的基础上,试了一下标题处就写出来的操作,取余

  1. >>> 5 % 2
  2. 1
复制代码

这个显然没有问题,不过下面这个就.....
  1. >>> 0.5 % 0.2
  2. 0.09999999999999998
复制代码

个人百度之后对这个是可以理解的,计算机的底层二进制语言可能是导致了这个问题的根本原因。

但是我还是觉得,其实 0.5 % 0.2 = 0.1 才对。那么怎么样才能得到我想要的结果呢?
个人感觉取整不可取,因为这样就表示 0.4999 % 0.2 和上面的结果一样了,这个显然是不正确的吧~




BTW:Decimal是怎么使用的,看百度上的结果是说用于提高计算精度的,不过下面这个问题就.. 求解答
  1. >>> Decimal (0.4)
  2. Decimal('0.40000000000000002220446049250313080847263336181640625')
复制代码



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-3-17 18:07:11 | 显示全部楼层
毕竟生活中不需要太精确的小数, 真的需要的话可以用int来解决
  1. def mod(a, b) # a % b
  2.     point = 0
  3.     while a != int(a) and b != int(b):
  4.         a *= 10
  5.         b *= 10
  6.         point += 1
  7.     res = list(str(a % b).zfill(point + 1))
  8.     res.reverse()
  9.     res.insert(point, '.')
  10.     res.reverse()
  11.     return res
  12.    
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
~风介~ + 5 + 5 支持楼主!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-16 23:51:31 | 显示全部楼层
有意思,但不明白
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-17 02:07:19 | 显示全部楼层
%号, 在python3中, 好像是用于整形的。 你看看书上有没有说。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-17 15:55:13 | 显示全部楼层
喜欢散步 发表于 2015-3-17 02:07
%号, 在python3中, 好像是用于整形的。 你看看书上有没有说。

没有相关书籍,看百度什么的也没什么结果~

取余就是用的%,也没说什么专用于小数、整数的。

那么如你所说的,可以告知下小数如何取余?还是需要转化为整数?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-17 20:52:50 | 显示全部楼层
生活中小数取余有哪里要用到么,楼主能不能举例一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-17 22:53:10 | 显示全部楼层
  1. x= 0.5 % 0.2
  2. round(x,2)
  3. 0.1
复制代码

这是一种方法来规范小数点后几位正常
round(...)
    round(number[, ndigits]) -> number
   
    Round a number to a given precision in decimal digits (default 0 digits).
    This returns an int when called with one argument, otherwise the
    same type as the number. ndigits may be negative.
是用来随机四舍五入的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-18 01:56:52 | 显示全部楼层
先用格式化符号%f来定义精度,交给变量,再用变量来取余数不行吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-18 02:37:58 | 显示全部楼层
0.5%0.2结果是对的:>>> 0.5%.02
0.01999999999999999

浮点型, 有精度问题。 个人见解, 对于C, 也是这样的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-18 02:38:41 | 显示全部楼层
如果非要很精确, PYTHON3里面有相应的模块
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-18 19:47:51 | 显示全部楼层
'%.1f'%(0.5%0.2)
一定要数值吗?字符可否?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-18 22:09:29 | 显示全部楼层
我来看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-22 21:31:56 | 显示全部楼层
我是新手如有说错请见谅。。decimal是个高精度实数模块吧?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-22 21:34:28 | 显示全部楼层
有关decimal可以参考这个。
https://docs.python.org/3/library/decimal.html
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-30 21:17:32 | 显示全部楼层
戴宇轩 发表于 2015-3-17 18:07
毕竟生活中不需要太精确的小数, 真的需要的话可以用int来解决

其实确实,但是生活中也不需要太多编程啊。

就是会有一种缺陷的感觉,想看看是不是自己没理解到位或者用法不对
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-23 10:23:26 | 显示全部楼层
Python中取余运算针对的是整型
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-15 06:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表