为什么 ToString() 不适用于 String 类型,解决方法是什么?
Why is ToString() not working on a type String , and what is the work around?
我正在将 excel 中的行读入模型,并且 excel returns 将“10%”或“20%”等输入读为“0.1”, 0.2" 字符串 。将该字符串转换为 string 的最佳方法是什么 "20%" , "10%" 并避免不必要的转换,以免损失性能?所以为了澄清,我需要将字符串转换为字符串,但程序显然不允许我这样做。我可以将该字符串转换为双精度,然后使用 ToString("#0.##%")
将该双精度转换为字符串,但我想知道是否有更快的方法。
这是读取行并将 excel 列格式化为模型道具类型的代码
static T ReadRow<T>(ExcelWorksheet worksheet, int rowNum)
{
var o = (T)Activator.CreateInstance(typeof(T));
int colNum = 1;
foreach (var p in typeof(T).GetProperties())
{
if (worksheet.Cells[rowNum, colNum].Value != null)
{
p.SetValue(o, Convert.ChangeType(worksheet.Cells[rowNum, colNum].Value, p.PropertyType));
}
colNum++;
}
return o;
您获得 10% 作为 .01 的原因是该数字仅存储为 .01,读取 excel 时您将获得其实际存储值。您将其视为 10%,因为它在 excel 中被格式化为 %。
要读取百分比:10% 作为字符串 '10%',您必须在读取时格式化字符串。
扩展 prachi 提供的将字符串转换为所需结果的解决方案。
string val = "0.2"; // for reference
string.Format("{0}%", Convert.ToDouble(val) * 100);
我正在将 excel 中的行读入模型,并且 excel returns 将“10%”或“20%”等输入读为“0.1”, 0.2" 字符串 。将该字符串转换为 string 的最佳方法是什么 "20%" , "10%" 并避免不必要的转换,以免损失性能?所以为了澄清,我需要将字符串转换为字符串,但程序显然不允许我这样做。我可以将该字符串转换为双精度,然后使用 ToString("#0.##%")
将该双精度转换为字符串,但我想知道是否有更快的方法。
这是读取行并将 excel 列格式化为模型道具类型的代码
static T ReadRow<T>(ExcelWorksheet worksheet, int rowNum)
{
var o = (T)Activator.CreateInstance(typeof(T));
int colNum = 1;
foreach (var p in typeof(T).GetProperties())
{
if (worksheet.Cells[rowNum, colNum].Value != null)
{
p.SetValue(o, Convert.ChangeType(worksheet.Cells[rowNum, colNum].Value, p.PropertyType));
}
colNum++;
}
return o;
您获得 10% 作为 .01 的原因是该数字仅存储为 .01,读取 excel 时您将获得其实际存储值。您将其视为 10%,因为它在 excel 中被格式化为 %。 要读取百分比:10% 作为字符串 '10%',您必须在读取时格式化字符串。
扩展 prachi 提供的将字符串转换为所需结果的解决方案。
string val = "0.2"; // for reference
string.Format("{0}%", Convert.ToDouble(val) * 100);