C# 是否可以通过计算手动提高双精度位字符串的精度
为了从十进制值创建浮点数,我们需要有符号位、指数和尾数 双精度使用11个指数位和52个尾数位 假设我们要存储0.3。我们可以通过执行以下操作找到尾数:C# 是否可以通过计算手动提高双精度位字符串的精度,c#,math,floating-point,double,precision,C#,Math,Floating Point,Double,Precision,为了从十进制值创建浮点数,我们需要有符号位、指数和尾数 双精度使用11个指数位和52个尾数位 假设我们要存储0.3。我们可以通过执行以下操作找到尾数: 0.3 * 2 = 0.6 => 0 0.6 * 2 = 1.2 => 1 0.2 * 2 = 0.4 => 0 0.4 * 2 = 0.8 => 0 0.8 * 2 = 1.6 => 1 0.6 * 2 = 1.2 => 1 ... Answer: 01001100110011... 在C#中,我可以使用以
0.3 * 2 = 0.6 => 0
0.6 * 2 = 1.2 => 1
0.2 * 2 = 0.4 => 0
0.4 * 2 = 0.8 => 0
0.8 * 2 = 1.6 => 1
0.6 * 2 = 1.2 => 1
...
Answer:
01001100110011...
在C#中,我可以使用以下代码执行此操作:
双值=0.3;
StringBuilder位字符串=新的StringBuilder();
对于(int i=0;i<53;i++)
{
数值*=2;
如果(值>=1)
{
追加(“1”);
价值--;
}
其他的
{
追加(“0”);
}
}
这里的目标是得到一个位字符串,该字符串包含超过53位的有效数据。您想要
十进制
精度,但不想使用十进制
?老实说,这很奇怪。@Aybe我想要一个任意精度的字符串。Decimal会给我96位的精度,但是如果我想要128位,或者256位呢?在网上搜索c#任意精度的Decimal
,你会发现很多实现。你想要Decimal
精度,但不想使用Decimal
?老实说,这很奇怪。@Aybe我想要一个任意精度的字符串。十进制会给我96位的精度,但如果我想要128或256位呢?在web上搜索c#任意精度十进制
,你会发现相当多的实现。