【问题标题】:How do I get the value after decimal? [duplicate]如何获得小数点后的值? [复制]
【发布时间】:2017-10-18 03:47:02
【问题描述】:

示例 -> 4.11 我需要得到 11,这是小数点后的值

我如何在 C# 中得到它?

【问题讨论】:

  • 输入是什么数据类型?一般规则是什么?例如,如果输入是 4.011 怎么办?
  • 你为什么要那个?如果了解需求,可能会有更好的方法。

标签: c#


【解决方案1】:

从值的 math.int 中减去值

【讨论】:

    【解决方案2】:

    如果您的意思是将小数点后的数字(如果存在)作为原始字符串,只需使用字符串操作:

    double myNumber = 4.0001115;
    string myString = myNumber.ToString();
    string decimalSeparator = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
    int index = myString.IndexOf(decimalSeparator);
    string afterDecimal = (index >= 0 && !myString.EndsWith(decimalSeparator)) ? myString.Substring(index + decimalSeparator.Length) : "";
    

    否则,如果您的意思是按自己的权利将其作为数字,那么这里的其他答案都是正确的。

    【讨论】:

    • 这对我不起作用,因为我的 CurrentCulture's NumberDecimalSeparator','myNumber.ToString() 将是 4,0001115
    • @Tim 好点,编辑了我的帖子以支持不同的格式。 :)
    【解决方案3】:

    使用这种保留尾数前导零的简单方法:

    double number = -1234.056789;
    string mantissa = string.Empty;
    decimal fraction = (decimal)number % 1;
    if (fraction != 0)
    {
        mantissa = Math.Abs(fraction).ToString().Substring(2);
    }
    Console.WriteLine(mantissa);
    Console.ReadKey();
    
    Result: 056789
    

    【讨论】:

      【解决方案4】:

      它很旧,但为什么不将值放在 int 中,所以它会缩短为没有小数的数字。

      然后用 int 数减去这个值 -->

      double myValue = 4.11;
      int myInteger = myValue // It's 4
      double valueAfterDecimal = myValue - myInteger; // It's 4.11 - 4 = 0.11
      int valueAsInt = Convert.ToInt16(valueAfterDecimal * 100) ;
      // 0.11 *100 = 11.0 --> Convert to Int = 11
      

      【讨论】:

      • 但是结果应该是11。
      • 我没有注意到这一点。但是您可以简单地取 0.11 * 100 并将其写入 int 值,以将所有其他值截去小数点后。
      • 是的,但是您错过了细微的细节,即结果应该是 11,而不是 0.11。
      猜你喜欢
      • 1970-01-01
      • 2011-09-04
      • 2011-04-22
      • 2022-11-22
      • 1970-01-01
      • 2011-03-24
      • 2016-07-12
      • 2018-12-08
      相关资源
      最近更新 更多