在C#中没有指数的float.Parsestring

问题描述

非常简单的情况,但是我完全被困在这里。所以,我有下一个方法:

public static float? ToSingleNullable(string value)
{
    if (string.IsNullOrEmpty(value))
        return null;
    else
    {
        float number = 0;
        if (float.TryParse(value,out number))
            return number;
        return null;
    }
}

在出现大于19 999 999的情况下,则用float.TryParse代替例如20000 012输出2e + 6或类似的值。如果进行反向转换,最多只能得到20000010。而且我无法预测会发生什么-20000或20000 010。

通常,如何使当前方法返回的浮点数完全以十进制表示?

网络上有很多.ToString()的示例,但是我找不到关于反向转换的任何信息。更改为decimal/double不起作用-该方法必须返回完全浮点数,因为我们有100500多行代码,这些代码使用可为空的float

该字符串由用户以“人类形式”输入。所以,我们得到了这样的东西:

string str = "20100999";
float number = ToSingleNullable(str);
Console.WriteLine(number);//about 2е+6. When convert to string - 20 000 000

当声明变量时,我可以放入下一个代码:

float a = 20 100 100,b = 20 100 100f;

因此,第一个变量将转换为指数形式,但第二个变量将保持不变。我的方法需要类似的东西。

也许可以将string解析为double/decimal,然后转换为float?,但我尝试过的所有方法都无效。尽管如此,方法始终返回指数表示法,这是不可接受的。

解决方法

我不太了解您的问题。 如果您真正搜索数字格式的字符串,则需要找到以下内容:Standard numeric format strings

如果要查看十进制格式的浮点数,请使用.ToString(“ F”),并且将获得不带指数的数字。很简单。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...