精华内容
下载资源
问答
  • 在很多场景的计算中,最终得到的数值例如123.45678,要截取2小数得到123.45,而不是默认的四舍入方法得到123.46,如何实现呢? 一.小数点后取2(四舍入)的方法 方法一:round()函数 方法二:’%.2f...

    在很多场景的计算中,最终得到的数值例如123.45678,要截取2位小数得到123.45,而不是默认的四舍五入方法得到123.46,如何实现呢?

    一.小数点后取2位(四舍五入)的方法

    方法一:round()函数

    其实这个方法不推荐大家使用,查询资料发现里面的坑其实很多,python2和python3里面的坑还不太一样,在此简单描述一下python3对应的坑的情况。

    a = 1.23456
    b = 2.355
    c = 3.5
    d = 2.5
    print(round(a, 3))
    print(round(b, 2))
    print(round(c))
    print(round(d))
    

    结果:

    1.235	# 1.23456最终向前进位了
    2.35	# 2.355居然没进位
    4		# 最终3.5居然变为4了
    2		# 最终2.5取值变为2
    
    • (1)通过上面的函数,看着是不是很晕,感觉round(x,n)函数是否进位也没看出是啥规律
    • (2)round(x,n)函数中,是否进位或四舍五入,取决于n位以及n+1位小数的值
    • (3)只有当n+1位数字是5的时候,容易混淆,如果n为偶数,则n+1位数是5,则进位,例如round(1.23456,3)最终变为1.235
    • (4)如果n为奇数,则n+1位是数5,那不进位,例如round(2.355,2),最终为2.35
    • (5)如果n为0,即没有填写n的时候,最终结果与上面相反,即整数部分为偶数的时候,小数位5不进位,例如(round(2.5)变为2)。
    • (6)整数部分为奇数的时候,小数位5进位。(round(3.5)变为4)

    看完如上的部分,感觉是不是更晕了,所以round()不推荐使用,目前也不知道设计这个函数的目的在哪里?有谁知道麻烦告知一下?

    方法二:’%.2f’ %f 方法

    f = 1.23456
    
    print('%.4f' % f)
    print('%.3f' % f)
    print('%.2f' % f)
    

    结果:

    1.2346
    1.235
    1.23
    
    • (1)原本以为:这个方法是最常规的方法,方便实用,居家旅行必备!
    • (2)但是…
    f = 0.625
    print('%.2f' % f)
    
    # 结果:0.62
    

    具体是否进位,有个概率问题,感兴趣的朋友可以看看评论里面的信息。
    感谢weixin_43094430这位朋友的提示,也感谢其他朋友的参与

    方法三:Decimal()函数

    from decimal import Decimal
    
    aa = Decimal('5.026').quantize(Decimal('0.00'))
    bb = Decimal('3.555').quantize(Decimal('0.00'))
    cc = Decimal('3.545').quantize(Decimal('0.00'))
    
    print(aa)
    print(bb)
    print(cc)
    

    结果:

    5.03
    3.56
    3.54
    

    decimal这个模块在很少用,如上图中,3.555结果为3.56,而3.545结果变为3.54,一个5进位了,一个是5没进位,具体原因不详。
    所以不推荐使用这个方法!!!



    二.小数点后取2位(四舍五不入)的方法

    通过计算的途径,很难将最终结果截取2位,我们直接想到的就是如果是字符串,直接截取就可以了。
    例如

    num = '1234567'		#字符串num
    print(num[:3])
    
    结果:
    123
    

    如果是123.456取2位小数(截取2位小数),值需要把小数点右边的当做字符串截取即可
    partition()函数(将字符串根据字符串切割):
    http://www.runoob.com/python/att-string-partition.html

    num = '123.4567'
    num_str = num.partition(".")
    print(num_str)
    
    结果:
    ('123', '.', '4567')   # 三个元素的元祖
    

    拼接字符串:format()函数的使用
    https://blog.csdn.net/i_chaoren/article/details/77922939


    方法一:

    def get_two_float(f_str, n):
        a, b, c = f_str.partition('.')
        c = c[:n]
        return ".".join([a, c])
    
    
    num = "123.4567"		#(1)隐患一,传入函数的是字符串
    print(get_two_float(num, 2))
    
    num2 = '123.4'			# (2)隐患二,如果传入的字符串小数位小于最终取的位数
    print(get_two_float(num2, 2))
    

    结果:

    123.45
    123.4
    

    最终版本:

    def get_two_float(f_str, n):
        f_str = str(f_str)      # f_str = '{}'.format(f_str) 也可以转换为字符串
        a, b, c = f_str.partition('.')
        c = (c+"0"*n)[:n]       # 如论传入的函数有几位小数,在字符串后面都添加n为小数0
        return ".".join([a, c])
    
    
    num = 123.4567
    print(get_two_float(num, 2))
    
    num2 = 123.4
    print(get_two_float(num2, 2))
    

    结果:

    123.45
    123.40
    
    展开全文
  • python 位数数

    千次阅读 2018-11-20 14:00:44
    输入一个位数,左对齐依次输出其数,中间用3个空格间隔。如输入12345,则输出: 1 2 3 4 5 输出以上内容的python语句是  print (1," ",2," ",3,...

     

    输入一个五位数,左对齐依次输出其数位,中间用3个空格间隔。如输入12345,则输出:

    1     2     3     4     5

    输出以上内容的python语句是

           print (1," ",2," ",3," ","4," ",5)

    说明:1之后的逗号,会产生一个空格,加上指定输出的空格和2之前的逗号产生的空格,一共隔了3个空格。


    【输入形式】

     

    输入一个5位的整数
    【输出形式】

     

    输出各数位,数位之间间隔3个空格。
    【样例输入】

     

    12345
    【样例输出】


    1     2     3     4     5

     

    • n = int(input())
      w1 = n // 10000
      w2 = (n - w1 * 10000) // 1000
      w3 = (n - w1*10000- w2*1000) // 100
      w4 = (n  - w1*10000- w2*1000 - w3 * 100) // 10
      w5 = n % 10
      print(w1," ",w2," ",w3," ",w4," ",w5)
    • " // "来表示整数除法,返回不大于结果的一个最大的整数,而" / " 则单纯的表示浮点数除法,返回浮点结果
    •  
    展开全文
  • JVM虚拟机32和64位有什么不同

    千次阅读 2018-03-06 11:56:48
    JVM虚拟机32和64的探索其实就是因为操作系统32和64,这两者有什么区别呢?引用链接 http://blog.sina.com.cn/s/blog_4adc4b090102vr3a.html所谓32处理器就是一次只能处理32,也就是4个字节的数据,而...

    JVM虚拟机32位和64位的探索

    其实就是因为操作系统有32位和64位,这两者有什么区别呢?
    引用链接 http://blog.sina.com.cn/s/blog_4adc4b090102vr3a.html
    所谓32位处理器就是一次只能处理32位,也就是4个字节的数据,而64位处理器一次就能处理64位,即8个字节的数据。如果我们将总长128位的指令分别按照16位、32位、64位为单位进行编辑的话:旧的16位处理器,比如Intel 80286 CPU需要8个指令,32位的处理器需要4个指令,而64位处理器则只要两个指令,显然,在工作频率相同的情况下,64位处理器的处理速度会比16位、32位的更快。而且除了运算能力之外,与32位处理器相比,64位处理器的优势还体现在系统对内存的控制上。由于地址使用的是特殊的整数,而64位处理器的一个ALU(算术逻辑运算器)和寄存器可以处理更大的整数,也就是更大的地址。传统32位处理器的寻址空间最大为4GB,使得很多需要大容量内存的数据处理程序在这时都会显得捉襟见肘,形成了运行效率的瓶颈。而64位的处理器在理论上则可以达到1800万个TB,1TB等于1024GB,1GB等于1024MB,所以64位的处理器能够彻底解决32位计算系统所遇到的瓶颈现象,速度快人一等,对于那些要求多处理器可扩展性、更大的可寻址内存、视频/音频/三维处理或较高计算准确性的应用程序而言,AMD 64处理器可提供卓越的性能。


    理论上来说32位的JVM有4G的堆大小限制。但是因为各种条件限制比如交换区,内核地址空间使用,内存碎片,虚拟管理机的管理开销,实际上可用的堆的大小远远比理论上的4G要少。 


    在32位windows的机器上,堆最大可以达到1.4G至1.6G。 
    在32位solaris的机器上,堆最大可以达到2G 
    而在64位的操作系统上,32位的JVM,堆大小可以达到4G 

    补充一句,在使用java参数-xms -xmx定义堆大小的时候, 
    1. 如果是32bit的jvm超过4G肯定是没用的,定义了4G,最终使用到的可能只有2G 
    2. 这两个值最好定义成一样,可以减少java gc的操作,有小幅度性能提高 



    JVM是Java开发人员必不可少的工具,而JVM也有32 bit和64 bit之分. 
    那实际上32位和64位JDK有什么区别呢? 
    JVM 32bit 和JVM 64bit的区别如下: 
      1目前只有server VM支持64bit JVM,client不支持32bit JVM。 
      2 .The Java Plug-in, AWT Robot and Java Web Start这些组件目前不支持64bit JVM 
      3.本地代码的影响:对JNI的编程接口没有影响,但是针对32-bit VM写的代码必须重新编译才能在64-bit VM工作。 
      4.32-bit JVM堆大小最大是4G, 64-bit VMs 上, Java堆的大小受限于物理内存和操作系统提供的虚拟内存。(这里的堆并不严谨) 
      5.线程的默认堆栈大小:在windows上32位JVM,默认堆栈最大是320k 64-bit JVM是1024K。 
      6.性能影响: 
        (1)64bit JVM相比32bit JVM,在大量的内存访问的情况下,其性能损失更少,AMD64和EM64T平台在64位模式下运行时,Java虚拟机得到了一些额外的寄存器,它可以用来生成更有效的原生指令序列。 
        (2)性能上,在SPARC 处理器上,当一个java应用程序从32bit 平台移植到64bit平台的64bit JVM会用大约 10-20%的性能损失,而在AMD64和 EM64T平台上,其性能损失的范围在0-15%. 

    以上摘自http://java.sun.com/docs/hotspot/HotSpotFAQ.html#64bit_description 

    JVM 性能分析 
    Sun的官网上写着,当一个java应用程序从32bit 平台移植到64bit平台的64bit JVM上,应用会有性能损失,相信很多人都会不解。 
    从数字上看,我们一般会认为64位JDK比32位JDK好,但是上文说过"实际上在32bit应用程序下,32bit处理器的性能甚至会更强,即使是64bit处理器,目前情况下也是在32bit应用下性能更强"。 

    许多在大同世界里很简单的道理包括越多大越好,移到计算机领域里就不是那么回事了。当处理多重CPU时,你会觉得那些多核所多出来的处理单元很有用,但如果你的工作仅仅是单线程的,那你要做的却是让其他核一边歇着。

    32位与64位的比较则更加细微。x86-64 架构不仅在x86架构的基础上增大了寄存器,而且还增加了寄存器的数量。从基本上说这会带来更好的性能(因为更多的寄存器可以让编译器创建更好的机器代码)。然而很不幸,至今把Java从32位移到64位带来的只是性能的下降。 

    Java虚拟机(JVM)是一个软件规范,其32位与64位版本性能有所不同,但它们都包括JIT编译器和垃圾回收功能(GC),其性能关键在JIT编译器和垃圾回收功能的执行效率上。       JIT编译器实现了程序执行之前Java字节码到硬件机器码的动态翻译,其背后的思想在于,相比Java源代码,字节码更小也更容易编译,但付出的代价是需要在Java字节码编译为机器码时花上一点时间,但与直接把Java源代码编译为机器码相比,时间还是少得多的。在32位与64位的JVM中,相应的JIT在把Java字节码编译为最终的机器码时,所花的时间稍微有所不同,但还能进行一些优化;另外,在IBM与Sun这两个版本的客户端与服务端程序上,总体性能也会有所不同。 垃圾回收会收回对象不再需要使用的内存,它必须被经常执行以释放对象不再访问的Java堆。由于在32位与64位平台上,Java堆中的数据大小会有所变化,所以会因为32位与64位JVM的性能差异,然而指针越大越GC管理越困难,导致相应垃圾回收的性能也会有所不同。
    展开全文
  • 描述: 随机生成一个位以内的数,然后输出该数共有多少位,每位分别是什么。 代码: <!DOCTYPE html> <html lang="...5位随机</title> </head&

    描述:

    随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么。

    代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>5位随机</title>
    </head>
    <body>
    <script>
        var arr=[];
        function numRandom() {
            var num=parseInt(Math.random()*100000);
            var numString=num.toString();
            var numLen=numString.length;
            var obj={};//介入对象就可以解决 ju
            for (var i=0;i<numLen;i++){
                obj[i]=parseInt(numString[i]);
            }
            console.log("该数为"+numString+",该数共有"+numLen+"位。");
            for (var j=0;j<numLen;j++){
                console.log("第"+(j+1)+"位为"+obj[j]);
            }
        }
        numRandom();
    
    </script>
    </body>
    </html>

     

    展开全文
  • 位数的日期戳

    千次阅读 2020-07-09 09:21:35
    刚开始看到,我以为是将时间戳的一部分保留了所以出现这个情况,但是通过还原发现时间是不对的,这就有点超出了我的认知,因为平时遇到的只是十的或者十三的时间戳,那这个是什么呢?原来这个也是时间的一种表现...
  • 1. 按与运算 按与运算符"&amp;"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果才为1 ,否则为0。参与运算的数以补码方式出现。 例如:9&amp;...
  • JS 随机生成位数

    千次阅读 2020-09-15 21:41:29
    js 随机生成一个五位以内的数,然后输出该数共有多少,每分别是什么 记录并且介绍三种方法,而且会详细说明由来以及原因,只是一个学习的记录,请各位指正。 第一种:用的是Math.random乘100000来输出位数...
  • 方法应该是比较简单粗暴的,一眼就能看懂吧?...console.log("随机数"+ _temp.length+""+_temp+" 分别为:"+_temp.split("")); 随便搜了一下,应该是没有比我这个看着更直接的了~
  • 生成6位随机数(不会是5位或者7位,仅只6位): [java] view plaincopy System.out.println((int)((Math.random()*9+1)*100000));  同理,生成5位随机数: ...
  • 字节地址和地址有什么区别

    万次阅读 2018-06-08 10:17:00
    地址就是每一个的地址,8一个字节,如果把字节...二、字节地址20H8个地址:从00H---07H,所以在用汇编去编程的时候,需要注意操作的地址是地址还是字节地址。 三、把数据存放在含有地址的字节地址中...
  • # 每数字都加上5, # 然后用和除以10的余数代替该数字, # 再将第一和第四交换,第二和第三交换。 a = input("请输入四数字:") a_list = [] for i in range(4): a_list.append(int(a[i])) fo...
  • MD5 加密后的位数两种:16 与 32 。16 实际上是从 32 字符串中取中间的第 9 到第 24 的部分,用 Java 语言来说,即: String md5_16 = md5_32.substring(8, 24); MD5 加密后的字符串又分为大写与...
  •  * 产生一个5位数,这个位数的每个数字都必须不同 打印所有的这种位数  *  * @author wangmeng  *  */ public class 位数全排列 {  public static void main(String[] args) {  L
  •  在项目中我们很多时候会这样的需求输入框中限制小数点前面最多几后面几 如下图: 2.上代码  1.html里面 onkeyup="clearNoNum(this,5)" &lt;span class="left_common_text&...
  • 我想搭一个硬磁盘阵列,raid1或raid5都行?希望各位大佬给点意见
  • 输入一个位数,左对齐依次输出其数,中间用3个空格间隔。如输入12345,则输出: 1 2 3 4 5 输出以上内容的python语句是 print (1,” “,2,” “,3,” “,”4,” “,5) 说明:1之后的逗号,会产生一个空格,...
  • 位数的回文素数

    千次阅读 2017-11-30 14:24:08
    题目:10301是个5位的素数。它个特点,把数字倒过来还是它本身,具有这样特征的素数,我们称之为:回文素数。10501、10601、11311········这些都是5位的回文素数。请你计算一下,像这样的5位数的回文素数...
  • MD5算法加密~16、32、64

    万次阅读 多人点赞 2015-10-15 14:39:18
    MD5算法加密~16、32、64。 1991年,由Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。MD5是非常安全的。 消息摘要(Message Digest)又称为数字摘要(Digital Digest)。它是一个唯一对应一个消息或...
  • public string returnmima(string str) { string ps = ""; MD5 md5 = MD5.Create(); byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); for (int
  • 身份证号码:共18组成  1-3为省级行政区代码  4-6为市、县级行政区代码  7-10为出生身年份  11-12为出生身月份  13-14为出生身日  15-16为派出所辖区分派代码  17为性别代码 18为效验码  ...
  • function randomNum() { var num=parseInt(Math.random()*10000); var a1=num%10; if(num<10) return [a1]; var a2=parseInt((num%100)/10); if(...
  • 操作系统32和64什么意思?

    千次阅读 2019-06-26 15:13:37
    一、32和64到底是什么意思 二、从寻址能力来了解32和64系统 三、从软件兼容性来了解32和64系统 四、从系统体积大小来了解32和64系统 、64电脑如何换32系统? 我们在安装系统的时候,需要...
  • 不足五位的转化为五位。前面补0

    千次阅读 2006-05-31 09:18:00
    string m_ClsID=string.Format("{0:D5}",m_sDiyCode);例:m_sDiyCode原值为5使m_sDiyCode成为:00005功能:不足五位的转化为五位。前面补0
  • 如图所示,这是一个5位半的数字万用表。 它可以显示的数值从-199999 到 199999,包括小数位。  第一个包含4个数码管,只能显示的正负和0,1,所以称之为半位。 其他的包含8个数码管(7段数码管+1个小数点),能...
  • 5位黑洞数

    千次阅读 2018-01-10 00:08:51
    求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则前边补0)。如此往复,数字会落入某个循环圈(称为数字黑洞)。 比如,刚才的数字会落入:[82962,75933, 63954, 61974]这个循环圈。 请...
  • 使用C++创建层目录每层目录中含有5个目录 目录名为128随机名 #include <iostream> #include <random> using namespace std; default_random_engine e; string path = "/Users/qiguan/test_dir...
  • 5位数字黑洞

    千次阅读 2017-03-06 10:30:57
    1007.5位数字黑洞 Description 任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果...
  • 给一个不多于5位的正整数,要求: (1)求出它是几位数; (2)分别输出每一位数字; (3)按逆序输出各位数字,例如原数为123,应输出321; 2. 代码 #include &amp;amp;lt;stdio.h&amp;amp;gt; #...
  • 1. 按与运算 按与运算符"&amp;"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果才为1 ,否则为0。参与运算的数以补码方式出现。 例如:9&...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,966,333
精华内容 1,186,533
关键字:

五位有什么