相关疑难解决方法(0)

在c#中从double中提取尾数和指数

有没有直接的方法从c#(或一般的.NET)中获取双尾数和指数?

我发现这个使用谷歌的例子,但我不确定它会有多强大.二进制表示可以在框架的某些未来版本中进行双重更改吗?

我发现的另一个替代方法是使用System.Decimal而不是double,并使用Decimal.GetBits()方法来提取它们.

有什么建议?

.net c# floating-point

26
推荐指数
1
解决办法
2万
查看次数

将double转换为字符串

我有三个双变量a,b和c

a = 0.000006 
b = 6 
c = a/b;
Run Code Online (Sandbox Code Playgroud)

所以C应该是0.000001

我想在文本框中显示这个值,所以我写了

textbox.text = c.tostring();
Run Code Online (Sandbox Code Playgroud)

但它的结果为"1E-06"..

任何人都可以帮助我如何在文本框中输入正确的值?

谢谢

c# typeconverter

21
推荐指数
3
解决办法
11万
查看次数

Double ToString - 没有科学记数法

我刚刚遇到了一个很棒的"功能",如果有足够的小数位,.NET 默认Double.ToString()使用科学记数法.

.005.ToString() // ".005"
.00005.ToString() // "5E-05" 
Run Code Online (Sandbox Code Playgroud)

有没有人知道一种有效的方法让它以标准(非科学)符号显示为字符串?

我已经看到了这个问题,但是前两个答案对我来说似乎有些苛刻,因为他们都做了Double.ToString(),然后只是重新格式化结果.

谢谢你的帮助.

编辑:

所需的输出:

.00005.ToString() == ".00005"
Run Code Online (Sandbox Code Playgroud)

EDIT2:

所有重复和结束投票是什么?我在问题中特别说,类似的问题没有令人满意的答案.这个网站上的人太高兴了.

我的解决方案

如果它对任何人都有用:

/// <summary>
/// Converts the double to a standard notation string.
/// </summary>
/// <param name="d">The double to convert.</param>
/// <returns>The double as a standard notation string.</returns>
public static String ToStandardNotationString(this double d)
{
    //Keeps precision of double up to is maximum
    return d.ToString(".#####################################################################################################################################################################################################################################################################################################################################");

}
Run Code Online (Sandbox Code Playgroud)

注意:这仅适用于值> 1.我还没有找到一种有效的方法来为所有值执行此操作.

.net c# double tostring

20
推荐指数
1
解决办法
1万
查看次数

如何将double转换为字符串而无需10次表示(E-05)

如何将double转换为字符串而无需10次表示(E-05)

double value = 0.000099999999833333343;
string text = value.ToString();
Console.WriteLine(text); // 9,99999998333333E-05
Run Code Online (Sandbox Code Playgroud)

我想字符串文本是0.000099999999833333343(或者差不多,我不做火箭科学:)

我尝试过以下变种

Console.WriteLine(value.ToString());      // 9,99999998333333E-05
Console.WriteLine(value.ToString("R20")); // 9,9999999833333343E-05
Console.WriteLine(value.ToString("N20")); // 0,00009999999983333330
Console.WriteLine(String.Format("{0:F20}", value)); // 0,00009999999983333330   
Run Code Online (Sandbox Code Playgroud)

做串扰N20或格式F20似乎最接近我想要的,但我最终得到了很多尾随零,是否有一种聪明的方法可以避免这种情况?我想尽可能接近双重表示0.000099999999833333343

c# tostring

12
推荐指数
3
解决办法
2万
查看次数

从大双值(C#)获取字符串

找不到将double转换为字符串的简单方法.我需要转换大数而不失真.如:

double d = 11111111111111111111;
string s = d.ToString();
Console.WriteLine(s);
//1.11111111111111E+19
Run Code Online (Sandbox Code Playgroud)

如何从double值获取与用户输入完全相同的字符串值.

11111111111111111111111 => "11111111111111111111111"

1.111111111111111111111 => "1.111111111111111111111"

有什么想法可以做到吗?

c# double tostring

6
推荐指数
1
解决办法
253
查看次数

How to deserialize string to JObject without scientific notation in C#

I have a string like this:

var str = "{'data': {'someProperty': 0.00001}}";
Run Code Online (Sandbox Code Playgroud)

When I parse it to JObject like that

var jObject = JObject.Parse(str);
Run Code Online (Sandbox Code Playgroud)

My jObject looks like this:

{"data": {"someProperty": 1E-05}}
Run Code Online (Sandbox Code Playgroud)

I need to get rid of scientific notation so that resulting JObject would look like original json.

I managed to do that using later version of Newtonsoft.Json like that:

var serializer = new JsonSerializer { FloatParseHandling = FloatParseHandling.Decimal };
using (System.IO.TextReader tr = new System.IO.StringReader(str)
using (var jsonReader …
Run Code Online (Sandbox Code Playgroud)

c# json.net deserialization

5
推荐指数
1
解决办法
1256
查看次数

显示双值而无需科学记数法

我有一个null的double值,它从数据库中获取值.它从数据库中检索值为'1E-08'.我想显示没有科学通知的值(0.00000001)

我使用了以下代码.

double? valueFromDB=1E-08;
string doubleValue=valueFromDB.Value.Value.ToString();
string formatedString=String.Format("{0:N30}", doubleValue);
Run Code Online (Sandbox Code Playgroud)

但是formatedString的值仍然是1E-08.

c# string-formatting

4
推荐指数
1
解决办法
3212
查看次数

为什么Convert.ToString格式会以这种方式加倍?

请考虑以下代码:

var rateUsed = 0.00000001;
var rateUsedConvertToString = Convert.ToString(rateUsed);
var rateUsedToString = rateUsed.ToString();
Run Code Online (Sandbox Code Playgroud)

而不是我的字符串是"0.00000001",它们都是"1E-08".我无法控制rateUsed的初始类型,它是一个double,我想要double的精确字符串表示.

为什么会发生这种情况,如果以双重值开始,如何将0.00000001作为字符串?

c#

2
推荐指数
1
解决办法
3098
查看次数

C++中double到string的转换

我目前正在为我的计算机科学模块编写一个项目,但是如果 double 值中有太多小数位,我的字符串值会默认为科学记数法的问题。

我试着显而易见的解决方案ostringstream,并.str()却使得它变成符号。我必须编译到 C++98 标准,所以我不能使用像std::to_string.

我需要将值转换为字符串,但它需要保持其格式。任何帮助,将不胜感激。

c++ string double scientific-notation type-conversion

1
推荐指数
1
解决办法
287
查看次数

c#使用double时的大数字表示

我有这个程序,从双变量中获取所有数字,删除小数点和减号,并分别添加每个数字.这是:

static void Main(string[] args)
    {

            double input = double.Parse(Console.ReadLine());

                char[] chrArr = input.ToString().ToCharArray();

                input = 0;

                foreach (var ch in chrArr)
                {
                    string somestring = Convert.ToString(ch);
                    int someint = 0;
                    bool z = int.TryParse(somestring, out someint);
                    if (z == true)
                    {
                        input += (ch - '0');
                    }
                }
Run Code Online (Sandbox Code Playgroud)

The problem is for example when I enter "9999999999999999999999999999999...." and so on, it gets represented as 1.0E+254 and what so my program just adds 1+0+2+5+4 and finishes. Is there efficient way …

c#

0
推荐指数
1
解决办法
112
查看次数