在谷歌搜索后,使用下面的代码仍然无法编译
decimal h = Convert.ToDecimal("2.09550901805872E-05");
decimal h2 = Decimal.Parse("2.09550901805872E-05", System.Globalization.NumberStyles.AllowExponent);
Run Code Online (Sandbox Code Playgroud) 有没有一种快速的方法将数字转换为指数表示法(例如:"0.5e10"或"-5e20")为十进制或双精度?
更新:我发现从指数表示法解析数字,但除非我指定了一种文化,否则这些例子对我不起作用.
解:
double test = double.Parse("1.50E-15", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud) 我正在用C#编写一个基本上读取SVG文件的程序,并对内容做了一些有用的事情.我将使用的最复杂的数据是路径.他们采取如下形式:
<path d="M5.4,3.806h6.336v43.276h20.738v5.256H5.4V3.806z"/>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,M,h,v,H,V和z表示一些命令.在某种程度上,它们就像函数一样,跟随它们的数字是参数.还有一些更复杂的:
<path d="M70.491,50.826c-2.232,1.152-6.913,2.304-12.817,2.304c-13.682,0-23.906-8.641-23.906-24.626
c0-15.266,10.297-25.49,25.346-25.49c5.977,0,9.865,1.296,11.521,2.16l-1.584,5.112C66.747,9.134,63.363,8.27,59.33,8.27
c-11.377,0-18.938,7.272-18.938,20.018c0,11.953,6.841,19.514,18.578,19.514c3.888,0,7.777-0.792,10.297-2.016L70.491,50.826z"/>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,"c"命令后跟6个参数(第一种情况下为-2.232,1.152,-6.913,2.304,-12.817和2.304).你可以看到这可能会变得棘手.我的问题是:SO社区是否知道任何现有的库将这些数据读入一些有用的ADT?
在我编写所有内容并编写大量字符串解析函数之前,我真的不想重新发明轮子.此外,任何建议将不胜感激.我知道如何阅读XML文档,这不是问题所在.
可能重复:
C#从指数表示法中解析一个数字
我目前有:
decimal value = Decimal.Parse(dataRow["column"].ToString());
Run Code Online (Sandbox Code Playgroud)
后端中有一些数据采用科学记数法(即3.2661758893885E-05),并且在解析时导致FormatException.是否有捷径可寻?
我有一个在 Microsoft Framework 3.5 上创建的 Winform 项目。用户可能安装了Windows 7或Windows XP以及Office 2007或更高版本。
我正在研究一个获取剪贴板数据并将其放入 C# 数据表的过程。我已经创建了一个方法来从剪贴板获取原始数据并将其上传到数据表中。
但在某些情况下,Excel 数据显示一个值,但内部有另一个值:
我正在研究一种从 Excel 获取原始数据的方法:
string XmlFmt = "XML Spreadsheet";
var clipboard = Clipboard.GetDataObject();
if (clipboard.GetDataPresent(XmlFmt))
{
var clipData = clipboard.GetData(XmlFmt);
StreamReader streamReader = new StreamReader((MemoryStream)clipData);
streamReader.BaseStream.SetLength(streamReader.BaseStream.Length - 1);
string xmlText = streamReader.ReadToEnd();
var stream = new StringReader(xmlText);
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xmlText);
DataSet dsExcelData = new DataSet();
dsExcelData.ReadXml(new XmlNodeReader(xmlDocument));
}
Run Code Online (Sandbox Code Playgroud)
但是,此方法会检索一个包含多个表的数据集,其中包含 Excel 数据每个部分的配置:

基本上,我想将这些结构转换为仅包含原始数据的简单数据表。有人可以帮助我提示如何实现这一目标?...我不想在此实现中使用第三方库。
我试图从xml文件中读取一些数据,数字以"-2.000000e + 000"等形式保存
我试图使用"double.Parse",但它返回的数字为-2000000 !!!! 有谁能告诉我我做错了什么?
我试图将这样的值转换为1E-08到C#中的十进制,因为小数是处理资金的优先数据类型但我在decimal.Parse()上输入错误"输入字符串的格式不正确." 不会先转换为浮动然后转换为十进制失败的目的?
我有一个字符串"-6.379885574693132E-10",我无法转换为十进制..它是大吗?有可能解决这个问题吗?
错误:
输入字符串格式不正确
public class Program {
private static void Main(string[] args) {
Foo foo = new Foo();
var str = "-6.379885574693132E-10";
foo.SetPropertyValue("myVal", str);
}
}
public class Foo {
public decimal myVal { get; set; }
public void SetPropertyValue(string propertyName, object value) {
var propertyInfo = GetType().GetProperty(propertyName);
propertyInfo.SetValue(this,
Convert.ChangeType(value, propertyInfo.PropertyType, CultureInfo.InvariantCulture), null);
}
}
Run Code Online (Sandbox Code Playgroud) 顺便说一句:xposs是从服务器收到的,所以我不能说它是一个浮点数,我需要将它转换为后面0.0f的浮点数:
xposs = "951.9791"
xspawn = float.Parse(yposs);
Run Code Online (Sandbox Code Playgroud)
这只是在浮点数中返回951.9791,但我想要951.9791f
我也尝试过:
xposs = "951.9791"
xspawn = float.Parse(yposs) + 0.0f;
Run Code Online (Sandbox Code Playgroud)
这仍然不起作用.
我需要它是0.0f格式因为我在Vector3()中使用它,并且没有f似乎不起作用(它很有效但是坐标是完全错误的,如果我在它工作后手动按f.)