单精度盆据格式 raw格式怎么打开开

1170人阅读
java&jsp(23)
我们知道double类型在进行处理时会涉及到精度丢失问题比如
double d=100*1.005;
结果d的结果为100.99
怎么解决这种问题呢,用DecimalFormat,它对double类型的进行四舍五入处理用法如下:
DecimalFormat df=new DecimalFormat(pattern);&
String nums=df.format(value);
这里给pattern:”.00“
value:100*1.005
nums值为:100.50
pattern常用的千分号显示:#,##0.00 (为什么个位数用0不用#,因为如果df.format(0),用#的话0显示为空,结果为.00而用0的话显示0.00)
pattern设置可以参考下面:
Localized?
Digit, zero shows as absent
Decimal separator or monetary decimal separator
Minus sign
Grouping separator
Separates mantissa and exponent in scientific notation.&Need not be quoted in prefix or suffix.
Subpattern boundary
Separates positive and negative subpatterns
Prefix or suffix
Multiply by 100 and show as percentage
Prefix or suffix
Multiply by 1000 and show as per mille
¤(\u00A4)
Prefix or suffix
Currency sign, replaced by currency symbol. If doubled, replaced by international currency symbol. If present in a pattern, the monetary decimal separator is used instead of the decimal separator.
Prefix or suffix
Used to quote special characters in a prefix or suffix, for example,&&'#'#&&formats 123 to&&#123&. To create a single quote itself, use two in a row:&&# o''clock&.
在c#中,可以参考
“,”字符用作组分隔符和数字比例换算说明符。
组分隔符:如果在两个设置数字的整数位格式的数字占位符(0 或 #)之间指定一个或多个逗号,则在输出的整数部分中的每个数字组之间插入一个组分隔符字符。
当前&&对象的&&和&&属性将确定用作数字组分隔符的字符以及每个数字组的大小。&例如,如果使用字符串“#,#”和固定区域性对数字
1000 进行格式化,则输出为“1,000”。
数字比例换算说明符:如果在紧邻显式或隐式小数点的左侧指定一个或多个逗号,则对于每个逗号,将要设置格式的数字除以 1000。&例如,如果使用字符串“0,,”对数字
进行格式化,则输出为“100”。
可以在同一格式字符串中使用组分隔符和数字比例换算说明符。&例如,如果使用字符串“#,0,,”和固定区域性对数字
进行格式化,则输出为“1,000”。
下面的示例演示如何使用逗号作为组分隔符。
double value = ;
Console.WriteLine(value.ToString(&#,#&, CultureInfo.InvariantCulture));
// Displays 1,234,567,890
Console.WriteLine(value.ToString(&#,##0,,&, CultureInfo.InvariantCulture));
// Displays 1,235
那么类似java的#,##0.00,c#中可以写成#,0.00
8.ToString(&#,0.00&) 输出:8.00
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:156160次
积分:2674
积分:2674
排名:第11352名
原创:84篇
转载:76篇
评论:39条
n年后的事情会是什么样子 谁知道呢 做好现在吧 每天能进步一点 你就应该满足了
(1)(1)(2)(6)(1)(1)(4)(7)(1)(8)(10)(5)(10)(9)(12)(13)(1)(1)(31)(6)(6)(3)(5)(13)(3)(1)c语言(20)
///////////////////
#include&cstdio&
//-----------------
union int_char
unsigned char ch[4];
void out_put(union int_char x)//x86是小端对其模式,即最数据的最低位存储在地址的最低位上。
printf(&单精度浮点数值为:%f\n&,x.i,x.i);
printf(&存储位置从左到右,从高位到低位依次为 0x:\n&);
printf(&%X &,x.ch[3]);//最高位
printf(&%X &,x.ch[2]);
printf(&%X &,x.ch[1]);
printf(&%X \n\n&,x.ch[0]);//最低位
//----------------
int main(int argc, char* argv[])
union int_
//x.i=123.456;
//x.i=1.0;
out_put(x);
system(&pause&);
单精度浮点数
1.IEEE 754 标准所定义的单精度浮点数的长度为 32 位,按位域可划分为:符号位、阶码位与尾数位,如下:
31----------------------22---------------------------------------------------------0
| |-------------------| |----------------------------------------------------------|
符号位取 0 表示正数,取 1 表示负数。
阶码位是 8 位,这里有一点小门道需要注意,那就是的指数 n 并不能直接当作阶码来处理,需要将其与 127 (0x7f) 相加才可得到&&的阶码表示。
尾数的位域长度在图示中是 23 位,但实际上却是 24 位,这个位是“不可见”的,其值固定为 1,这也就是说 IEEE 754 标准所定义的浮点数,其有效数字是介于 1 与 2 之间的小数。
可以尝试写一下 1.0 这个数的二进制单精度浮点格式,这有助于更好地理解单精度浮点数格式的位域分布。
1.0 的二进制单精度浮点格式:0 0 00
值得注意的一个问题是:书上说之所以要将指数加上 127 来得到阶码,是为了简化浮点数的比较运算,这一点我没有体会出来。但是通过 127 这个偏移量 (移码),可以区分出指数的正负。阶码为 127 时表示指数为 0;阶码小于 127 时表示负指数;阶码大于 127 时表示正指数。
2.首先将十进制数123.456转换为二进制数为:001&
&&&&&&(其中0.456如何转换为二进制?不断乘2取整,顺序排列
&&&&&& 如:0.734375转二进制,结果是101111。
&&&&&&&&& 0.734375 x 2 =&1.46875&
&&&&&&&&& 0.46875 x 2 =&0.9375&
&&&&&&&&& 0.9375 x 2 =&1.875&
&&&&&&&&& 0.875 x 2 =&1.75&
&&&&&&&&& 0.75 x 2 =&1.5&
&&&&&&&&& 0.5 x 2 =&1.0)&
&&&&&&001&即1. 乘以2的6次方
&&&&&&首先这是一个正数,则符号位为0
&&&&&&阶码为6,不过要转换成移码。
&&&&&&(如何求6的移码?这里我也不太深究,我见大家都是直接6+127=133,换为2进制为)
&& & &(移码与补码的关系: [X]移与[X]补的关系是符号位互为相反数(仅符号位不同))
&&&&&&尾数则为1. 的小数部分,即
综上:123.456的二进制存储格式为:
代码运行结果如下:
浮点数:1.0 & (0 0 00 )
从高位到低位依次是:单精度浮点数值为:1.000000
存储位置从左到右,从高位到低位依次为 0x:
=======================
浮点数:123.456
单精度浮点数值为:123.456001
存储位置从左到右,从高位到低位依次为 0x:
42 F6 E9 79
请按任意键继续. . .
用下面的代码也可以实现:
float i=3.0;
unsigned char* p=(unsigned char *)&i;
printf(&单精度浮点数值为:%f\n&,i);
printf(&存储位置从左到右,从高位到低位依次为 0x:\n&);
printf(&%X &,*(p+3));
printf(&%X &,*(p+2));
printf(&%X &,*(p+1));
printf(&%X \n\n&,*p);
得到的结果是相同的。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:397124次
积分:7720
积分:7720
排名:第2183名
原创:339篇
转载:52篇
评论:113条
(1)(4)(2)(8)(4)(2)(6)(5)(6)(4)(18)(12)(7)(2)(10)(10)(4)(13)(25)(22)(10)(11)(21)(4)(7)(12)(28)(57)(27)(7)(14)(23)(7)(7)(1)}

我要回帖

更多关于 stl 格式 输出双精度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信