科学计数法的坑爹

在测试账号中存在几亿亿的金币的时候c#会把普通计数法转成科学计数法 (9.22337203452387E+18  string类型) 比如这么大一个数字肿么办 只能使用下面的代码了


先利用 Convert.ToDecimal(Decimal.Parse(strData.ToString(), System.Globalization.NumberStyles.Float)); --strData 要转换的字符--   转换为Decimal格式 再.ToString() 转换为string就行了

代码如下(百度后改进的....无耻一次)


 private Decimal ChangeDataToD(string strData)
    {
        Decimal dData = 0.0M;
        if (strData.Contains("E"))
        {
            dData = Convert.ToDecimal(Decimal.Parse(strData.ToString(), System.Globalization.NumberStyles.Float));
           
        }
        else
        {
            dData = Decimal.Parse(strData);
        }
        return dData;
        
    }

最后和大家说下 unity中的类型转换常见的一个错误  带有Input 和Format 字眼的错误就是类型转换的错误 一般建议使用System下的 Convert去转换。 

 广告 ----------------------------------Q群479853988---------------------IT技术群----------缺AMF和 protobuf  数据结构的大神 求加入






  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在C语言中,科学计数法是一种用于表示大数字或小数字的方式,它通常由一个十进制整数部分和一个幂次方“E”或“e”后面的一个整数组成,例如`1.234E5`代表的是`1.234 * 10^5`即62340。 ### 科学计数法在C语言中的应用: 当你使用printf或scanf函数处理浮点数时,可以指定输入输出采用科学计数法的形式。例如,在`printf`中设置格式符`.E`或`%e`会使得输出结果以科学计数法显示;而在`scanf`中则需要相应的格式字符串读取科学计数法形式的数据。 #### 示例代码: ```c #include <stdio.h> int main() { double number = 123456789.123456; // 输出使用科学计数法 printf("科学计数法输出: %.2E\n", number); // 输入使用科学计数法 double input_number; scanf("%lfE%ld", &input_number, &exponent); // 这里是假设的结构体,实际使用中不需要 printf("用户输入的科学计数法值为: %.2f\n", input_number); return 0; } ``` ### 相关问题: 1. **如何在C语言中使用科学计数法进行数据输出?** 使用`%.nE`格式化控制符在`printf`中输出科学计数法。 2. **在C语言中如何从键盘输入科学计数法形式的浮点数?** 使用特定的格式字符串如`"%lfE"`配合`scanf`来接收科学计数法形式的输入。 3. **在哪些场景下可能会遇到与科学计数法相关的错误或问题?** 主要考虑输入过大的数值导致溢出、解析复杂格式引起的输入错误以及在非常精确计算时因浮点数精度限制带来的误差。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值