在数据表选择中将指数字符串转换为十进制

问题描述 投票:0回答:1

我正在尝试将指数字符串值转换为十进制,并将其与数据表Select函数中的另一个十进制值进行比较。

var dt = new DataTable();
dt.Columns.Add("Salary", typeof(string));
dt.Rows.Add("8.83567E-05");

string userInput = "8.83567E-05";

var matchedRows = dt.Select("Convert([Salary],'System.Decimal') = " + Decimal.Parse(userInput, System.Globalization.NumberStyles.Float));

但是我收到以下错误

System.FormatException:'输入字符串的格式不正确。'

所以经过一番研究,我发现使用System.Double可以解决我的问题

var matchedRows = dt.Select("Convert([Salary],'System.Double') = " + Decimal.Parse(userInput, System.Globalization.NumberStyles.Float));

并且有效。

但是我不想使用double,因为它大约存储数据。我的数据最多可以有10个小数位。

是否有将字符串指数字符串值转换为十进制数据类型的方法?还是在我的情况下使用double是安全的?

c# string type-conversion decimal exponent
1个回答
0
投票

根据microsoft documentation,使用double是正确的方法。(Expression属性使用与SelectDataTable方法中的过滤器相同的语法)

使用科学计数法的真实文字,例如4.42372E-30,使用System.Double解析。

没有科学符号,但有小数点的真实文字,被视为System.Decimal。如果数量超过最大值或System.Decimal支持的最小值,然后将其解析为System.Double。例如:

142526.144524将转换为十进制。

345262.78036719560925667将被视为Double。

© www.soinside.com 2019 - 2024. All rights reserved.