【问题标题】:Converting public class string into double in main class [duplicate]在主类中将公共类字符串转换为双精度[重复]
【发布时间】:2019-05-12 20:35:19
【问题描述】:

我正在尝试将我在类中创建的字符串转换为双精度,以便我可以在算术中使用它,但是我遇到了错误,我尝试了以下方法:

/* Calling class to use number for conversion
      double LocalCentToInch = Convert.ToDouble(CentI);
      double YourAnswer = MyConvert * LocalCentToInch;
      */
      //Ignore these lines just testing type converison and failing
      //Console.WriteLine(CentI);
      //Console.WriteLine(CentI.ToDouble());
      double LocalCentToInch;
      LocalCentToInch = Convert.ToInt32(CentI);
      Console.WriteLine(LocalCentToInch);

我从一个名为 convert one 的类调用,它看起来像这样:

/////////////////////centimetres to inches///////////////////////////////
public class ConvertOne 
{
  public ConvertOne()
  {
    Centtoinch = "0.3937008";
  }

  public ConvertOne(string centtoinch)
  {                                   //make new string with var data
    Centtoinch = centtoinch;
  }

  public string Centtoinch   { get; }


  public override string ToString()
  {
    return Centtoinch;
  }


}
///////////////////////end of centimetres to inches////////////////////////////

主要方法是数学下降的地方,目前看起来像这样:

  double YourAnswer = MyConvert * 0.3937008;
  Console.WriteLine("\nYour answer is:");
  Console.WriteLine(YourAnswer);

虽然我不想使用 0.39377008,但我想从它的类中调用此字符串并将其转换为双精度,以便可以在“YourAnswer”部分中使用。

如您所见,我尝试了不同的方法,尽管我不确定接下来应该尝试什么。

我得到的错误是:

Unhandled Exception:
System.InvalidCastException: Specified cast is not valid.
  at System.Convert.ToInt32 (System.Object value) [0x00003] in <71d8ad678db34313b7f718a414dfcb25>:0 
  at testConverter.Main () [0x000dc] in <93d359b0b3204d6482ac66dd3e4b0858>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidCastException: Specified cast is not valid.
  at System.Convert.ToInt32 (System.Object value) [0x00003] in <71d8ad678db34313b7f718a414dfcb25>:0 
  at testConverter.Main () [0x000dc] in <93d359b0b3204d6482ac66dd3e4b0858>:0 
exit status 1

【问题讨论】:

  • 如果您描述了实际问题会有所帮助。但是,我应该注意,您在上面的代码中将字符串转换为 Int32(一个 int)而不是 double。使用Convert.ToDouble() 有什么问题?
  • 能否请您发布具体的错误和它发生的位置? “我遇到错误”并没有告诉我们太多。您还可以删除代码示例的注释部分,并将其限制为演示问题所需的代码吗?写的很混乱。请参阅How to Askminimal reproducible example
  • 据我所见,最好将Centtoinch设为Double,并在需要将值作为字符串时将其转换为字符串。
  • 为什么使用字符串来存储转换因子,而不是双倍?
  • 如果文化相关,也要考虑stackoverflow.com/a/5109871/1462295

标签: c#


【解决方案1】:

这是将字符串转换为双精度的方法

var str = "1.23";
var dble = Convert.ToDouble(str);

var str = "1.23";
var dble = Double.Parse(str);

其实就是Convert.ToDouble,简单调用第二种方法——见https://referencesource.microsoft.com/#mscorlib/system/convert.cs,d98fcd7819f63d0f

【讨论】:

    猜你喜欢
    • 2017-10-06
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    相关资源
    最近更新 更多