浮点数

浮点数类型的比较大小

China☆狼群 提交于 2019-12-06 12:34:25
https://www.jianshu.com/p/4679618fd28c 这篇文章介绍的比较仔细。 1 package com.cy.test.math; 2 3 4 import java.math.BigDecimal; 5 6 public class TestCompareDouble { 7 8 /** 9 * 比较两个double类型数的大小 10 * @param args 11 */ 12 public static void main(String[] args) { 13 double targetScore = Double.parseDouble("0.5"); 14 double score = 0.500001; 15 16 BigDecimal score1 = new BigDecimal(String.valueOf(targetScore)); 17 BigDecimal score2 = new BigDecimal(String.valueOf(score)); 18 System.out.println(score2.doubleValue()); 19 20 if(score2.compareTo(score1) >= 0){ 21 System.out.println("score2大于等于score1"); 22 } 23 }

PHP常用(正则)表单验证类

為{幸葍}努か 提交于 2019-12-06 11:41:37
这些天一直在整理项目,就把一些常用的总结了一下. <?php /** * 页面作用:常用表单验证类 */ class class_post { //验证是否为指定长度的字母/数字组合 function fun_text1($num1,$num2,$str) { return (preg_match("/^[a-zA-Z0-9]{".$num1.",".$num2."}$/",$str))?true:false; } //验证是否为指定长度数字 function fun_text2($num1,$num2,$str) { return (preg_match("/^[0-9]{".$num1.",".$num2."}$/i",$str))?true:false; } //验证是否为指定长度汉字 function fun_font($num1,$num2,$str) { // preg_match("/^[\xa0-\xff]{1,4}$/", $string); return (preg_match("/^([\x81-\xfe][\x40-\xfe]){".$num1.",".$num2."}$/",$str))?true:false; } //验证身份证号码 function fun_status($str) { return (preg_match('/(^([\d]{15}|

python3中浮点数相减问题

孤街浪徒 提交于 2019-12-06 10:39:52
首先直接上判断方法:一切判断直接将整数部分装化成二进制,如果位数相等则相减后的值是等于的,如果不相等,相减大的结果一定不等于你要比较的结果。 如66.6-60.6==6.0的情况,66.6的二进制:1000010.100110011001100110011001100110011001100110011 60.6的二进制: 111100.10011001100110011001100110011001100110011001101 6.0的二进制: 110 大家可以看到60.6的整数长度比66.6少一位,而浮点数是保存为4字节32位的,其中第一位是符号位,后面的23位用来保存位数,位数就是整数和小数部分组成的,于是上面的答案就出来了,整数短一位,小数保留时肯定会多一位,而整数转化成十进制计算是没有精度损耗的,但是小数却因为缺多了一位导致有精度损耗,所以66.6-60.6结果不可能等于6.0,只能是大于或者小于6.0,一次题为例子,由于60.6小数保留长所以相间的结果小于6.0. 总结:其他任何情况自行按上面的计算,第一步:直接将整数转化成二进制,看位数是否相等,再看23(整数位和小数位的总长) 找到一个合适的图片: 附上图片: 浮点数在计算机中的存储分为三个部分:    1. 符号位(sign):float和double符号位均为1位,0代表正数,1代表负数    2. 指数位

js保留两位小数方法总结

馋奶兔 提交于 2019-12-06 08:42:38
  最近在做结算系统,经常需要用到金额保留两位小数,刚开始我一直用的是Angular中的过滤器number |2,但是,这无法满足我的需求。问题是,当用户离开文本框时,我需要将用户输入的内容转换成保留两位小数的格式,我想了好久,没有想出来,然后我试了toFixed()方法,这个方法也不可行,因为它将数据转换成了字符串,传给后台是错的。然后,我就找了其他方法。现在刚好有空,所以就把相关保留两位小数的方法总结了一下,不同的场景用不同的方法,即用即取。 一、四舍五入相关 1、toFixed()方法 需注意,保留两位小数,将数值类型的数据改变成了字符串类型 1 // 1.四舍五入 2 var num =2.446242342; 3 num = num.toFixed(2); 4 console.log(num); //2.45 5 console.log(typeof num); // string 2、Math. floor (),不四舍五入 ,向下取整 注意,不改变数据类型 1 // 2.不四舍五入 向下取整 2 num = Math.floor(num * 100) / 100; 3 console.log(num); //2.44 4 console.log(typeof num); // number 3、字符串匹配 注意,先将数据转换为字符串,最后再转为数值类型 1 // 3

js学习:基本数据类型

£可爱£侵袭症+ 提交于 2019-12-06 07:20:33
数据类型在 js 里面分为两个大类: 基本数据类型 引用数据类型 基本数据类型: 数值 number 各种意义上的数字:整数、小数、浮点数等 正数:100 负数:-100 浮点数,小数:1.234 进制表示: 八进制:0100 0开头表示是八进制数 二进制:0b101 十六进制:0x100 各种进制的数字打印输出的时候,会转换为十进制进行输出 科学计数法: 123e3 123e-3 -3.1E+12 .1e-23 等 以下两种情况,JavaScript 会自动将数值转为科学计数法表示,其他情况都采用字面形式直接表示 小数点前的数字多于21位 小数点后的零多于5个 NaN:也是数值类型,但表示一个非数字 字符串 单引号或双引号括起来的一段文本 基本情况下不允许换行书写 length属性返回字符串的长度,该属性也是无法改变的(你可以给这个属性赋值,但是它不会改变,并且程序也不会报错) 布尔 表示真假:只有 true 或者 false 两个值 true表示真,false表示假 两个特殊的数据类型: 空 null 值只有一个 就是 null 必须要赋值null后才是null null的类型是object 未定义 undefined 值只有一个 就是 undefiend 表示当需要使用一个变量或数据的时候,这个数据却没有值得时候 当一个变量定义了没有赋值的时候,值就是undefined

python字符串格式化

倾然丶 夕夏残阳落幕 提交于 2019-12-06 06:21:09
python字符串格式化 Python的字符串格式化有两种方式:%格式符方式,format方式 %格式符 %[(name)][flags][width].[precision]typecode (name) 可选,用于选择指定的key flags 可选,可供选择的值有: + 右对齐;正数前加正好,负数前加负号; - 左对齐;正数前无符号,负数前加负号; 空格 右对齐;正数前加空格,负数前加负号; 0 右对齐;正数前无符号,负数前加负号;用0填充空白处 width 可选,占有宽度 .precision 可选,小数点后保留的位数 typecode 必选 s,获取传入对象的__str__方法的返回值,并将其格式化到指定位置 r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置 c,整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置 o,将整数转换成 八 进制表示,并将其格式化到指定位置 x,将整数转换成十六进制表示,并将其格式化到指定位置 d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置 e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e) E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E) f, 将整数

模型量化原理及tflite示例

风流意气都作罢 提交于 2019-12-06 05:10:13
模型量化 什么是量化 模型的weights数据一般是float32的,量化即将他们转换为int8的。当然其实量化有很多种,主流是int8/fp16量化,其他的还有比如 二进制神经网络:在运行时具有二进制权重和激活的神经网络,以及在训练时计算参数的梯度。 三元权重网络:权重约束为+1,0和-1的神经网络 XNOR网络:过滤器和卷积层的输入是二进制的。 XNOR 网络主要使用二进制运算来近似卷积。 现在很多框架或者工具比如nvidia的TensorRT,xilinx的DNNDK,TensorFlow,PyTorch,MxNet 等等都有量化的功能. 量化的优缺点 量化的优点很明显了,int8占用内存更少,运算更快,量化后的模型可以更好地跑在低功耗嵌入式设备上。以应用到手机端,自动驾驶等等。 缺点自然也很明显,量化后的模型损失了精度。造成模型准确率下降. 量化的原理 先来看一下计算机如何存储浮点数与定点数: 其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。 float的范围为-2^128 ~ +2^128. 可以看到float的值域分布是极其广的。 说回量化的本质是: 找到一个映射关系,使得float32与int8能够一一对应. 。那问题来了,float32能够表达值域是非常广的,而int8只能表达[0,255

sprintf简介

≯℡__Kan透↙ 提交于 2019-12-06 04:27:10
s p r i n t f 基本用法 输入一段有特点的字符串 #include <cstdio> #include <cstring> using namespace std; int main(){ char a[100]; int pos=0; for(int i=1;i<=10;i++){ pos+=sprintf(a+pos," %d-",i); } a[pos-1]='\n'; printf(a); return 0; } 把整数123打印成一个字符串保存在s中。 sprintf(s,"%d", 123); //产生"123" 可以指定宽度,不足的左边补空格: sprintf(s,"%8d%8d", 123, 4567); //产生:" 123 4567" 当然也可以左对齐: sprintf(s,"%-8d%8d", 123, 4567); //产生:"123 4567" 也可以按照16进制打印: sprintf(s,"%8x", 4567); //小写16进制,宽度占8个位置,右对齐 sprintf(s,"%-8X", 4568); //大写16进制,宽度占8个位置,左对齐 这样,一个整数的16进制字符串就很容易得到,但我们在打印16进制内容时,通常想要一种左边补0的等宽格式,那该怎么做呢?很简单,在表示宽度的数字前面加个0就可以了。 sprintf(s,"%08X",

python中的random函数方法

[亡魂溺海] 提交于 2019-12-06 04:14:57
Python标准库 中的random函数,可以生成随机浮点数、 整数 、 字符串 ,甚至帮助你随机选择 列表 序 列中的一个元素,打乱一组数据等。   random中的一些重要函数的用法: 1 )、random() 返回0<=n<1之间的随机实数n; 2 )、choice(seq) 从序列seq中返回随机的元素; 3 )、getrandbits(n) 以长整型形式返回n个随机位; 4 )、shuffle(seq[, random]) 原地指定seq序列; 5 )、sample(seq, n) 从序列seq中选择n个随机且独立的元素;  详细介绍: random.random() 函数是这个模块中最常用的方法了,它会生成一个随机的浮点数,范围是在0.0~1.0之间。 random.uniform() 正好弥补了上面函数的不足,它可以设定浮点数的范围,一个是上限,一个是下限。 random.randint() 随机生一个整数int类型,可以指定这个整数的范围,同样有上限和下限值,python random.randint。 random.choice() 可以从任何序列,比如list列表中,选取一个随机的元素返回,可以用于字符串、列表、 元组 等。 random.shuffle() 如果你想将一个序列中的元素,随机打乱的话可以用这个函数方法。 random.sample()