浮点数

C语言,如何产生随机数

狂风中的少年 提交于 2019-12-30 11:35:01
1. 基本函数 在C语言中取随机数所需要的函数是: int rand(void); void srand (unsigned int n); rand()函数和srand()函数被声明在头文件stdlib.h中,所以要使用这两个函数必须包含该头文件: #include <stdlib.h> 2. 使用方法 rand()函数返回0到RAND_MAX之间的伪随机数(pseudorandom)。RAND_MAX常量被定义在stdlib.h头文件中。其值等于32767,或者更大。 srand()函数使用自变量n作为种子,用来初始化随机数产生器。只要把相同的种子传入srand(),然后调用rand()时,就会产生相同的随机数序列。因此,我们可以把时间作为srand()函数的种子,就可以避免重复的发生。如果,调用rand()之前没有先调用srand(),就和事先调用srand(1)所产生的结果一样。 for (int i=0; i<10; i++) { printf("%d ", rand()%10); } 每次运行都将输出:1 7 4 0 9 4 8 8 2 4 srand(1); for (int i=0; i<10; i++) { printf("%d ", rand()%10); } 每次运行都将输出:1 7 4 0 9 4 8 8 2 4 例2的输出结果与例1是完全一样的。

C++浮点数比较与精度损失

烂漫一生 提交于 2019-12-29 22:04:34
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1.浮点数在计算机中的存储机制 32bit:bit0~bit22存储 有效数字 部分;bit23~bit30存储指数部分;bit31存储符号位 64bit:bit0~bit51存储 有效数字 部分;bit52~bit62存储指数部分;bit63存储符号位 例如:30.25 二进制表示方法:11110.01,转换为二进制指数法:1.111001*2^4 2.使用浮点数可能出现的精度损失 #include <iostream> #include <string> using namespace std; void main() { char buff[100] = { '\0' }; float fa = 500.5;//存储的时候转换为二进制111110100.1,存储有效位的bit是足够的,所以并不会有精度损失 float fb = 500.344;//111110100.0101100000000....后面多少位,懒得算了,存储有效数字部分的bit应该是不够的,所以存储进来会出现精度损失 float fc = 500.125;//111110100.001,和第一种情况一样,bit足够存储有效位,所以不会有精度损失 //当然同理,double类型的数据也会出现以上情况,只是所占字节数不一样罢了

Python 的浮点数损失精度问题(为什么说双精度浮点数有15位十进制精度)

孤街浪徒 提交于 2019-12-29 21:59:02
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本篇讨论的现象可以从下面这段脚本体现出来: >>> x = 0.0 >>> for i in range( 10 ): x += 0.1 print (x) 0.1 0.2 0.30000000000000004 0.4 0.5 0.6 0.7 0.7999999999999999 0.8999999999999999 0.9999999999999999 >>> 即:为什么有几行的输出看起来不对? 因为 Python 中使用双精度浮点数来存储小数。在 Python 使用的 IEEE 754 标准(52M/11E/1S)中,8字节64位存储空间分配了52位来存储浮点数的有效数字,11位存储指数,1位存储正负号,即这是一种二进制版的科学计数法格式。虽然52位有效数字看起来很多,但麻烦之处在于,二进制小数在表示有理数时极易遇到无限循环的问题。其中很多在十进制小数中是有限的,比如十进制的 1/10,在十进制中可以简单写为 0.1 ,但在二进制中,他得写成:0.0001100110011001100110011001100110011001100110011001…..(后面全是 1001 循环)。因为浮点数只有52位有效数字,从第53位开始,就舍入了。这样就造成了标题里提到的”浮点数精度损失“问题。 舍入(round

四. python 数学功能函数

家住魔仙堡 提交于 2019-12-29 12:24:26
一. 内置数学函数 1. 绝对值abs a=-100 a2=abs(a) #求绝对值 print(a2) #100 abs 2. 比较大小max,min #比较两个数大小 b=100 #如果前面b>c 返回1 b<c返回-1 相等返回0 c=20 print((b>c)-(b<c)) #1 print(max(b,c)) #100 给定的参数返回最大的值 print(min(b,c)) # 20 给定的参数返回最xiao的值 max,min 3.平方pow #求x的5次方 2^5 print(pow(2,5)) #32 pow()求某某的n次方 pow 4. 四舍五入round #四舍五入round(x,[,n]) 返回浮点数x的四舍五入的值 如果给n值 则代表舍入到小 print(round(3.456)) #3 print(round(3.7)) #4 print(round(3.72228,2)) #3.72 后面那个参数表示保留几位 print(round(3.546,1)) #3.5 后面那个参数表示保留几位 round 二 .导入库math 库:封装了一些功能 import math 意思就是导入数学相关的库 math 数学相关的库 import math #意思就是导入数学相关的库 1. 向上取整ceil import math #意思就是导入数学相关的库 #

ORACLE基本数据类型总结

老子叫甜甜 提交于 2019-12-29 10:23:03
ORACLE基本数据类型(亦叫内置数据类型 built-in datatypes)可以按类型分为:字符串类型、数字类型、日期类型、LOB类型、LONG RAW& RAW类型、ROWID & UROWID类型。 在讲叙字符串类型前,先要讲一下编码。字符串类型的数据可依编码方式分成数据库字符集(CHAR/VARCHAR2/CLOB/LONG)和国际字符集(NCHAR/NVARCHAR2/NCLOB)两种。数据库中的字符串数据都通过字符集将字符转换为数字后(二进制),才存储到数据块中。通过不同的编码集转换,即便是相同的字符,也可能会转换成不同的二进制编码。这也是产生乱码的原因。数据库的编码格式一般是在创建数据库时指定的。当然也可以修改数据库的编码。 查看数据库视图所包含的数据类型:SELECT * FROM DBA_TYPES WHERE OWNER IS NULL.具体细节情况参见 Oracle® Database SQL Language Quick Reference 10/11 g 或 官方文档 一 字符串类型 字符串数据类型还可以依据存储空间分为固定长度类型(CHAR/NCHAR) 和可变长度类型(VARCHAR2/NVARCHAR2)两种. 所谓固定长度:是指虽然输入的字段值小于该字段的限制长度,但是实际存储数据时,会先自动向右补足空格后,才将字段值的内容存储到数据块中

Oracle基本数据类型

大兔子大兔子 提交于 2019-12-29 10:22:42
一 字符串类型 字符串数据类型还可以依据存储空间分为固定长度类型(CHAR/NCHAR) 和可变长度类型(VARCHAR2/NVARCHAR2)两种. 所谓固定长度:是指虽然输入的字段值小于该字段的限制长度,但是实际存储数据时,会先自动向右补足空格后,才将字段值的内容存储到数据块中。这种方式虽然比较浪费空间,但是存储效率较可变长度类型要好。同时还能减少数据行迁移情况发生。 所谓可变长度:是指当输入的字段值小于该字段的限制长度时,直接将字段值的内容存储到数据块中,而不会补上空白,这样可以节省数据块空间。 1.1:CHAR类型 CHAR(size [BYTE | CHAR]) CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。另外你可以指定它存储字节或字符,例如 CHAR(12 BYTYE) CHAR(12 CHAR).一般来说默认是存储字节,你可以查看数据库参数 NLS_LENGTH_SEMANTICS的值。 SQL Code SQL> show parameter nls_length_semantics; NAME TYPE VALUE ------------------ ----------- -----------------

python语法问题经验总结

对着背影说爱祢 提交于 2019-12-26 15:42:14
try。。。 except与if。。。else差别 try。。。 except try后面的语句发生异常就执行except后的语句 if。。。else 只是选择结构 self.response, ip = self.socket.recvfrom(3000) #接收数据,并捕获数据发送源的地址。数据缓冲区长度 SyntaxError: Non-ASCII character ‘\xe6’ 问题 在该.py的文件头部添加: 下列代码,即可 #- - coding: utf-8 - print格式化输出 print(“The length of %s is %d” % (s,x)) (1). %字符:标记转换说明符的开始 (2). 转换标志:-表示左对齐;+表示在转换值之前要加上正负号;“”(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0填充 (3). 最小字段宽度:转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出。 (4). 点(.)后跟精度值:如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将从元组中读出 (5).字符串格式化转换类型 转换类型 含义 d,i 带符号的十进制整数 o 不带符号的八进制 u 不带符号的十进制 x 不带符号的十六进制(小写) X

python中随机数的产生

我的未来我决定 提交于 2019-12-26 15:25:00
import random (1)随机生成0到1之间的浮点数  randrom.randrom() (会返回[0.0,0.1)之间的浮点数) (2)随机生成a到b之间的整数  randrom.randint()(左闭右闭) (3)随机生成a到b之间的整数  randrom.randrange()(左闭右开) (4)随机生成a到b之间的浮点数  randrom.uniform()(左闭右闭) 来源: https://www.cnblogs.com/chenxue-wscls/p/11583993.html

面试笔试题

拥有回忆 提交于 2019-12-26 12:13:42
7.假设当前时间为2015年10月1日下午2点30分,下面语句输出结果为 2015-10-1 14:30 SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd hh:mm”); System.out.printIn(sdf.format(new Date())); 8.以下语句涉及类型转换和数字取整,最终i的值为 4 double n = (double)10/3; int i =(int)Math.ceil(n); 9.语句System.out.print(0.05+0.01)输出的结果出现为0.060000000000000005而非是0.06原因是 答:原因是因为就是计算机并不能识别除了二进制数据以外的任何数据,无论我们使用何种编程语言,都要先把源程序编译成二进制的机器码后才能被计算机识别到,浮点数由两部分组成,指数和尾数,如果在这个转换的过程中,浮点数参与计算,那么转换的过程就会变得不可逆,就是在这个过程中,发生了精度的丢失,但是有些浮点计算会得到准确的结果,应该也是最碰巧大那个计算的二进制之间能够准确转换,而当输出单个浮点数数据的时候可以正确输出,double d =2.4;System.out.print(d)输出的是2.4而不是2.3999999999999999,也是就是说

浮点数加法引发的问题:浮点数的二进制表示

有些话、适合烂在心里 提交于 2019-12-26 11:39:40
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1、问 题: 之前有同学问过这样一个问题: echo|awk '{print 3.99 -1.19 -2.80}' 4.44089e-16 类似的问题 还有在 java 或者 javascript 中: 23.53 + 5.88 + 17.64 = 47.05 23.53 + 17.64 + 5.88 = 47.050000000000004 为什么结果不是 0 或者不相等呢? 如果你不能立马回答出原因,那说明你对 浮点数计算的基本知识还不了解。 刚好最近 segmentfault.com 上也有同学问了同样的一个问题,现在整理下,以备忘。 2、浮 点数的概念 : 浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。 浮点计算 是指浮点数参与的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。 3、十进制到二进制的转化问题: 为了更好的理解,先来看一下10进制的纯小数是怎么表示的,假设有纯小数D,它小数点后的每一位数字按顺序形成一个数列: {k1,k2,k3,...,kn} 那么D又可以这样表示: D = k1 / (10 ^ 1 ) +