这个管理员密码是什么么

db2 对float类型取char后显示科学计数法
核心提示: 比如:values char(round(CAST( as float),2))后显示1.求大侠帮解决?我想要的结果是11111.11因为我是对数据库更新操作,取出来的是浮点的,db2 对float类型取char后显示科学计数法,插入的是char类型的,所以做此操作!
&比如:values char(round(CAST( as float),2))
求大侠帮解决?
我想要的结果是11111.11
因为我是对数据库更新操作,取出来的是浮点的,插入的是char类型的,所以做此操作!
赞助商链接float和double类型数据在内存中的存储方法 - 初级程序员的资料 - ITeye技术网站
博客分类:
float和double类型数据在内存中的存储方法
浮点数(单精度的float和双精度的double)在内存中以二进制的科学计数法表示,表达式为N = 2^E * F;其中E为阶码(采用移位存储),F为尾数。
float和double都由符号位、阶码、尾数三部分组成,float存储时使用4个字节,double存储时使用8个字节。各部分占用位宽如下所示:
符号位:0代表正数,1代表负数。
阶码:用移位表示法存储科学计数法中的指数数据:float阶码占8位,取值范围-128~127,但并没有按照移位表示法+128,而是+127。同理double要+1023。
尾数:尾数部分:用二进制的科学计数法表示后,去掉小数点前面恒定的1,只保留小数点后面的二进制数据,存入尾数位置即可。
上述中阶码也是指数位,但阶码和尾数的描述显然是看不懂的。我们继续。
比如8.25,二进制科学计数法表示为:1.,具体转换方法:8的二进制1000;.25的二进制.01:即0*2^(-1) + 1*2^(-2)。写为:1000.01,小数点左移3位,即转换完毕。
符号位确定:8.25为正数,符号位为0。
阶码的表示:阶码位3+127=130;二进制,已经是8位。
尾数的表示:去掉小数点前面的1,为00001,后面补充0至23位:000 00
最终8.25在内存里存储的二进制为:
又比如11.4,二进制科学计数法表示:float:1. * 2^3,double:1.
1101 * 2^3,所以他们的值其实是不同的,因为.4用二进制无法精确表示,这也就是为什么float类型数据和double类型数据都存储11.4,但是对比起来,他们不相等的原因。比如float a = 11.4; double b = 11.4; 要让他们正确对比,比如((float)b == a),让double数据舍弃比float多的那些尾数。
对于double型数据,只要将阶码前面加0扩展到11位,尾数后面补充0至52位即可。
移位表示法:在数X上加一个偏移量,常用于表示浮点数中的阶码(注意阶码的偏移量和移位表示法定义有差别)。
定义:若X为纯整数,X[移] = 2^(n-1) + X,-2^(n-1) &= X & 2^(n-1);若X为纯小数,X[移] = 1 - X,-1&= X & 1
#include &stdio.h&
#define print_float(a) print_bitxx(a, 4)
#define print_int(a) print_bitxx(a, 4)
#define print_double(a) print_bitxx(a, 8)
int is_little_endian()
short int x = 0x0001;
return ((char*)&x)[0];
void print_bitxx(const void *a, int bytes)
const unsigned char *pos = (const unsigned char *)a;
int max_i = bytes - 1;
if (is_little_endian()) {
for (i=max_i; i&=0; i--) {
for (j=7; j&=0; j--) {
printf("%d", ((pos[i] & (1 && j)) ? 1 : 0));
if (j == 4 || j == 0)
printf(" ");
printf(" ");
printf("\n");
int main(int argc, char **argv)
float a = 11.4;
double b = 11.4;
print_float(&a);
print_double(&b);
printf("%d\n", a == (float) b);
printf("%d\n", (double)a == (double) b);
(537 Bytes)
下载次数: 0
浏览: 387806 次
来自: 北京
压缩文件里面是空的....
成功!多谢
应该是国外的网站,被过滤了无法访问。你百度一下就可以看到很多教 ...
http://pyunit.sourceforge.net/p ...
现在可以了。thanks!lllt 写道这位哥们,这个写法根本 ...float 类型的属性存储时变成科学计数法, 在mysql数据库中怎么查询 - J2EE当前位置:& &&&float 类型的属性存储时变成科学计数法, 在mysql数float 类型的属性存储时变成科学计数法, 在mysql数据库中怎么查询&&网友分享于:&&浏览:11次float 类型的属性存储时变成科学计数法, 在mysql数据库中如何查询float类型的属性,&当小数超过4位时,&java就会自动用科学计数法来表示,&但是如果拿这个数来查询数据库就会找不到,&如:&java对象保存的值:&1.0E-5,&&&&数据库存储的值:&1E-5,&
拿&1.0E-5来查询找不到,&即便是用1E-5也查询不到,&但是如果用0.00001来查询就可以;
请问这该如何处理,&在java中,&还是在数据库中;&
说明:&项目是用struts2&、&Spring&、&MyBatis------解决方案--------------------小数超4位?
若是mysql数据库,你定义varchar与float,double都行
java,你用long吧,最后把你的代码发出来?------解决方案--------------------不知所云。。
0.00001&和1.0E-5&以及&1E-5&在我看来没有区别
float&a=1E-5;
float&b=1.0E-5;
float&c=0.00001;
都是&0.00001------解决方案--------------------mysql能用decimal么?------解决方案--------------------引用:Quote: 引用:
mysql能用decimal么?
可以的,&但是前提是不该字段类型。&&设计数据库的人,&考虑不周,&又不能改,&没办法。&
我记得这个考题经常出的&工资字段用float,然后让改错……
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有java基础之float、double底层运算
时间: 16:13:11
&&&& 阅读:168
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&& &目前java遵照IEEE制定的浮点数表示法来进行float,double运算。这种结构是一种科学计数法,用符号、指数和尾数来表示,底数定为2——即把一个浮点数表示为尾数乘以2的指数次方再添上符号。& & & & 我们来看一段java代码:public&class&FloatToBinary&{ public&static&void&main(String[]&args)&{
float&f1=8.5f;
System.out.println("f1底层数据(十进制):"+Float.floatToIntBits(f1));
int&int1=Float.floatToIntBits(f1);
System.out.println("f1底层数据(二进制):"+Integer.toBinaryString(int1)); }}打印结果:f1底层数据(十进制):f1底层数据(二进制):0000000我们知道float与double分别在内存中占有32位和64位,见下:符号位&阶码尾数长度float182332double1115264IEEE浮点数表示标准:V = (-1)s×M×2E&E = e-Bias其中Bias表示偏移量,float的偏移量为Bias=2k-1-1=28-1-1=127,double的偏移量为Bias=210-1=1023浮点数在计算机中存储时,按照二进制科学计数法拆分为三个部分:符号位、指数部分和尾数部分。如下图所示:存储时,按照最高位存储符号位,次高位存储指数部分,低位存储尾数部分的次序存储。存储时的排列示意图如下:&float类型的内存分布如下图所示:double类型的内存分布如下图所示:编码规则在实际存储时要对使用二进制科学计数法表示的浮点数值的符号位、指数部分和尾数部分进行编码处理。一般需要分为规约形式的浮点数、非规约形式的浮点数和特殊值三种类型进行编码。其编码前后处理如下图所示:650) this.width=650;" name="image_operate_0612" src="/e/u261/themes/default/images/spacer.gif" alt="单精度和双精度浮点数数据类型详解" title="单精度和双精度浮点数数据类型详解" style="border:1px solid rgb(221,221,221);background-image:url(&&);background-position:50% 50%;background-repeat:no-" />注:非规约浮点数主要用于扩大0值附近的浮点数表示范围,非规约浮点数的绝对值均小于规约浮点数的绝对值,即前者在实数轴上更靠近0,这样可以提高0附近的计算精度;一般C、C++中float和double的取值范围都是按照规约浮点数定义的,MSDN文档和相关教材也是这么说的,但部分编译器按照ANSI/IEEE Std 754-1985标准实现了非规约浮点数,本文末尾留有程序示例说明。符号位:0表示正数,1表示负数;指数部分:&float的偏移量为2^8 - 1,double的偏移量为2^11 - 1;尾数部分:实际尾数部分中的小数点后的数值,规约浮点数使用标准的二进制科学计数法表示,其尾数范围在&[1,2),非规约浮点数的尾数部分范围在(0,1)。上面的理论在哪里都能看到,这只是IEEE754的定义而已,我们来实际用一下它是怎么表达小数的:①求单精度8.5f 的二进制 过程。首先8.5是正数所以符号位为0;然后化为二进制,1*2^3+0*2^2+0*2^1+0*2^0 (整数部分) &. (小数点) & 1*2^-1小数部分简化为1000.1要把二进制数变成(1.f)*2^(exponent)的形式,其中exponent是指数即1..然后我们得到阶码为e=3+127=130 即阶码表示二进制为.余下小数0001,我们补齐至23位即。这样符合结构 符号位 & 0 & 阶码& 尾数然后我们来看一下8.5存储在内存中 &因为java.lang.Integer.toBinaryString()&方法返回一个字符串表示的整数参数,以2为底的无符号整数,所以在开始的程序打印结果我们添加一个0,与我们算出的结果就相同了。网上有很多关于float、double的转换解说,这里只是我涉及到了这块,然后自己去学习了一下,其实刚开始我看理论知识比较晕,后来看到别人以列子详细解说,然后再回头看理论,就发现也没那么难了。本文出自 “” 博客,请务必保留此出处标签:&&&&&&&&&
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!

我要回帖

更多关于 管理员密码是什么 的文章

 

随机推荐