十进制

前端小知识

孤街浪徒 提交于 2019-12-15 01:19:03
(1) 为什么“0.1+0.2=0.30000000000000004”? 首先声明这不是bug,原因在与十进制到二进制的转换导致的精度问题! 其实这是很多编程语言都有的问题: 是因为使用了IEEE 754浮点数格式 来存储浮点类型的编程语言都具有这个问题。 IEEE754-2008中的64位浮点数 规则定义的小数后的有效位数至多为52位导致计算出现精度丢失问题! 0.1十进制转二进制:0.000110011001100110011(0011)无限循环。 0.2十进制转二进制0.0011001100110011…(循环0011) 最后: 0.00011001100110011001100110011001100110011001100110011001 +0.00110011001100110011001100110011001100110011001100110011 = 0.01001100110011001100110011001100110011001100110011001100 转换成10进制之后得到:0.30000000000000004! Math.round(-5.5)等于多少? Math.round(-5.5)的返回值是-5,Math.round(5.5)的返回值是6。 四舍五入的原理是在参数上加0.5然后做向下取整。 来源: CSDN 作者:

python时间处理,datetime中的strftime/strptime

风格不统一 提交于 2019-12-14 17:52:46
1、由日期格式转化为字符串格式的函数为: datetime.datetime.strftime() 2、由字符串格式转化为日期格式的函数为: datetime.datetime.strptime() 3、两个函数都涉及日期时间的格式化字符串,列举如下: %a 星期几的简写;如 星期三为Web %A 星期几的全称;如 星期三为Wednesday %b 月份的简写; 如4月份为Apr %B 月份的全称; 如4月份为April %c 标准的日期的时间串;(如: 04/07/10 10:43:39) %C 年份的后两位数字 %d 十进制表示的每月的第几天 %D 月/天/年 %e 在两字符域中,十进制表示的每月的第几天 %F 年-月-日 %g 年份的后两位数字,使用基于周的年 %G 年分,使用基于周的年 %h 简写的月份名 %H 24小时制的小时 %I 12小时制的小时 %j 十进制表示的每年的第几天 %m 十进制表示的月份 %M 十时制表示的分钟数 %n 新行符 %p 本地的AM或PM的等价显示 %r 12小时的时间 %R 显示小时和分钟:hh:mm %S 十进制的秒数 %t 水平制表符 %T 显示时分秒:hh:mm:ss %u 每周的第几天,星期一为第一天 (值从0到6,星期一为0) %U 第年的第几周,把星期日做为第一天(值从0到53) %V 每年的第几周,使用基于周的年 %w

Python学习笔记4

空扰寡人 提交于 2019-12-14 01:41:58
格式化输出字符串 格式化输出字符串主要有两种方式, 1、使用%的字符串输出格式 格式化的输出形式是:字符串%数据 字符串中数据转换格式如下表: %s 字符串 %d 十进制整数 %x 十六进制整数 %o 八进制整数 %f 十进制浮点数 %e 以科学计数法表示的浮点数 %g 十进制或者科学计数法表示的浮点数 可以对比以下方式使用: #%[域宽.字符宽度]s #域宽为正是右对齐,为负是左对齐 >> > "Student's name:%10.4s Math score:%10.4f English:%10d" % ( 'Tom' , 63.2 , 100 ) "Student's name: Tom Math score: 63.2000 English: 100" >> > "Student's name:%-10.4s Math score:%-10.4f English:%-10d" % ( 'Tom' , 63.2 , 100 ) "Student's name:Tom Math score:63.2000 English:100 " 2、使用{}和fomate的新式格式化字符串 最简单的使用方法是: >> > 'No.{} No.{} No.{}' . format ( 1 , 2 , 3 ) 'No.1 No.2 No.3' 可以按指定顺序输出,0代表第一个参数

java 浮点数表示法

只谈情不闲聊 提交于 2019-12-13 18:49:50
这个要从Double类的一个方法说起:Double.doubleToLongBits(double value),根据官方文档,其部分注释内容如下: public static long doubleToLongBits(double value) Returns a representation of the specified floating-point value according to the IEEE 754 floating-point "double format" bit layout. Bit 63 (the bit that is selected by the mask 0x8000000000000000L ) represents the sign of the floating-point number. Bits 62-52 (the bits that are selected by the mask 0x7ff0000000000000L ) represent the exponent. Bits 51-0 (the bits that are selected by the mask 0x000fffffffffffffL ) represent the significand (sometimes called the mantissa)

C语言程序设计100例之(24):数制转换

◇◆丶佛笑我妖孽 提交于 2019-12-12 12:42:45
例24 数制转换 题目描述 请你编一程序实现两种不同进制之间的数据转换。 输入格式 共三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A-F表示数码10-15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。 输出格式 一个正整数,表示转换之后的m进制数。 输入样例 16 FF 2 输出样例 11111111 (1)编程思路。 十进制整数转换为R进制整数的基本方法是:“除R取余”。具体做法为:对于十进制数整数,用R连续除要转换的十进制整数及各次所得之商,直除到商等于0时为止,则各次所得之余数即为所求R进制整数由低位到高位的值。这个过程可以写成一个简单的循环。 一般而言,对于任意的R进制数 A n-1 A n-2 …A 1 A 0 可以表示为以下和式: A n-1 ×R n-1 +…+A 1 ×R 1 +A 0 ×R 0 (其中R为基数) 这个和式也称为“按权展开式”。 R进制数转换为十进制数的基本方法是将R进制数的各位按权展开相加即可。 本例的思路是:将输入的n进制整数按权值展开后转换为十进制整数,再将所得的十进制整数采用“除m取余”转换为m进制整数即可。 (2)源程序。 #include <stdio.h> int main() { char

你想要的Python面试都在这里了【315+道题】

爱⌒轻易说出口 提交于 2019-12-11 18:31:30
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 写在前面 近日恰逢学生临近毕业,课程后期大家“期待+苦逼”的时刻莫过于每天早上内容回顾和面试题问答部分【临近毕业每天课前用40-60分钟对之前内容回顾、提问和补充,专挑班里不爱说话就的同学回答】。 期待的是可以检验自己学习的成功;苦逼的是怎么又有东西没记住,但我们依然每天坚持一遍、一遍又一遍指导记住为止。 需要完整的面试题可以看一下下图: 第一部分 Python基础篇(80题) 为什么学习Python? 通过什么途径学习的Python? Python和Java、PHP、C、C#、C++等其他语言的对比? 简述解释型和编译型编程语言? Python解释器种类以及特点? 位和字节的关系? b、B、KB、MB、GB 的关系? 请至少列举5个 PEP8 规范(越多越好)。 通过代码实现如下转换: 二进制转换成十进制:v = “0b1111011” 十进制转换成二进制:v = 18 八进制转换成十进制:v = “011” 十进制转换成八进制:v = 30 十六进制转换成十进制:v = “0x12” 十进制转换成十六进制:v = 87 请编写一个函数实现将IP地址转换成一个整数。 如 10.3.9.12 转换规则为: 10 00001010 3 00000011 9 00001001 12 00001100

Java各进制之间的转换

邮差的信 提交于 2019-12-11 14:02:26
Java中数据不同格式转换API: 十进制到十六进制 :Integer.toHexString(int i); 十进制到八进制 :Integer.toOctalString(int i); 十进制到二进制 :Integer.toBinaryString(int i); 十六进制到十进制 :Integer.parseInt(“0xff”, 16); 八进制到十进制 :Integer.parseInt(“0123”, 8); 二进制到十进制 :Integer.parseInt(“1010”, 2); 来源: CSDN 作者: 变强无需秃头 链接: https://blog.csdn.net/weixin_42203391/article/details/103489710

20155215 第二周测试1 与 myod

亡梦爱人 提交于 2019-12-10 05:09:54
课堂测试 第一题 每个 .c一个文件,每个 .h一个文件,文件名中最好有自己的学号 用Vi输入图中代码,并用gcc编译通过 在Vi中使用K查找printf的帮助文档 提交vi编辑过程截图,要全屏,包含自己的学号信息 因为我发现我第一题提交的是错误的图片,是我还没有编译通过的图片,所以我重新补交一下。 遇到的问题: 之所以刚开始老师给的程序始终没办法编译通过的原因是因为我的文件夹里有很多个main.c文件,编译时对我所有的main.c都进行了编译,所以一直都显示报错。当我把老师给的图片上的程序都重新放进单独的文件夹后,这个问题就被解决了。 第四题 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a? 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息 制作静态库代码步骤如下所示: gcc -c add.c -o add.o gcc -c div.c -o div.o gcc -c mul.c -o mul.o gcc -c sub.c -o sub.o ar rcs mymath.a add.o sub.o mul.o div.o gcc -static -o link1 main.o mymath.a ./link1 运行图如下:

牛客新生赛 E.蕊蕊识数(数学)(题解auto、to_string)

好久不见. 提交于 2019-12-10 02:32:50
题目链接: 点击这里 注意到对于任意的 1 0 k ( k ≥ 0 且 为 整 数 ) 10^k (k \ge 0 且为整数) 1 0 k ( k ≥ 0 且 为 整 数 ) ,其被3除的余数都是1,因此 a ⋅ 1 0 k a\cdot 10^k a ⋅ 1 0 k 和 a a a 对3同余。 任何十进制非负整数都可以表示成 ∑ a i ⋅ 1 0 k \sum{a_i\cdot 10^k} ∑ a i ​ ⋅ 1 0 k 的多项式形式,其中 a i a_i a i ​ 恰好是该十进制数的各个数位。 因此任意十进制非负整数被3除的余数,都等于将它的各个十进制位的数相加后被3除的余数。换而言之,3满足所有情况的 m m m ,而比3小的可能的答案只有2。 所以只需要判断一下2是否是答案,如果不是输出3即可。 题解如下: C++11新特性 auto: 点击这里 to_string函数用法: 点击这里 # include <bits/stdc++.h> using namespace std ; int main ( ) { ios :: sync_with_stdio ( 0 ) ; cin . tie ( 0 ) ; cout . tie ( 0 ) ; int T ; cin >> T ; int maxx = 0 ; while ( T -- ) { string str ;

十进制小数的二进制,八进制,十六进制转换方法

倖福魔咒の 提交于 2019-12-09 21:47:12
十进制小数的二进制,八进制,十六进制转换方法 十进制小数转换为二进制小数 方法:“乘2取整” 对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分. 如此不断重复,直到小数部分为0或达到精度要求为止。第一次所 得到为最高位,最后一次得到为最低位。 如:0.25的二进制 0.25*2=0.5 取整是0 0.5*2=1.0 取整是1 即0.25的二进制为 0.01 ( 第一次所得到为最高位,最后一次得到为最低位) 0.8125的二进制 0.8125*2=1.625 取整是1 0.625*2=1.25 取整是1 0.25*2=0.5 取整是0 0.5*2=1.0 取整是1 即0.8125的二进制是0.1101(第一次所得到为最高位,最后一次得到为最低位) 如果小数部很难为0时,则根据要求精度取近似值。 比如:0. 2的二进制 0.2*2=0.4 取整是0 0.4*2=0.8 取整是0 0.8*2=1.6 取整是1 0.6*2=1.2 取整是1 0.2*2=0.4 取整是0 即0.2的二进制是0.00110011。。。成无限循环小数了。 十进制小数转换为八进制小数 方法:“乘8取整” 0.71875)10 =(0.56)8 0.71875*8=5.75 取整5 0.75*8=6.0 取整6 即0.56