两个花车在转换后仍然四舍五入?

two floats still rounding after conversion?

所以,我一直在尝试取两个浮点数并将它们相除,但它似乎总是给我一个 0 或无穷大。

我知道整数会发生这种情况(但我使用的是浮点数)。它似乎在我的转换中被截断了。我知道这有点蹩脚的代码,但我以前做过一次,我只是不记得是怎么做的,而且做得也很差。

所以我希望有人能告诉我划分两个 float 类型变量的正确方法。

我想要一个根据给定输入每天增加的浮点数。

金额的默认设置为 1.23456789。但在尝试将它们划分为转换变量后,我似乎总是得到 000,因为我可以手动输入浮点值,这似乎很好。

string charc = Settings.Default["Day"].ToString();
DateTime checkme = DateTime.Parse(charc);
DateTime now = DateTime.Now;
string daysleft = (checkme - now).Days.ToString();
float.TryParse(daysleft, out float daysnum);
textBox3.Text = daysnum.ToString();

float amount = Settings.Default["Amount"];
float Total = amount / daysnum;

备注

  • 你真的应该考虑更简洁地命名你的变量
  • 如果某些内容是字符串并且您需要解析它,请检查错误
  • 您还进行了各种转换和愚蠢行为

不过,这应该会为您指明正确的方向

代码重构

var dayString = Settings.Default["Day"].ToString()); // Some day From Settings

if (!DateTime.TryParse(dayString, out var someDay))
{
   throw new ApplicationException($"Invalid input date : {dayString}");
   //return; // return if not a valid date stored in settings
}

var daysLeft = ( DateTime.Now - someDay).Days; // days left as int (number)

textBox3.Text = daysleft.ToString();

var amountString = Settings.Default["Amount"]; // Some amount From Settings

if (!double.TryParse(amountString, out var amount))
{
   throw new ApplicationException($"Invalid input Amount : {amountString}");
    //  return; // return if not a valid double stored in settings
}

var total = amount / daysLeft;

已更新以在无法解析您的输入时抛出 ApplicationException。至少它会告诉你出了什么问题以及原因