【发布时间】:2017-10-18 03:47:02
【问题描述】:
示例 -> 4.11 我需要得到 11,这是小数点后的值
我如何在 C# 中得到它?
【问题讨论】:
-
输入是什么数据类型?一般规则是什么?例如,如果输入是 4.011 怎么办?
-
你为什么要那个?如果了解需求,可能会有更好的方法。
标签: c#
示例 -> 4.11 我需要得到 11,这是小数点后的值
我如何在 C# 中得到它?
【问题讨论】:
标签: c#
从值的 math.int 中减去值
【讨论】:
如果您的意思是将小数点后的数字(如果存在)作为原始字符串,只需使用字符串操作:
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。
使用这种保留尾数前导零的简单方法:
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
【讨论】:
它很旧,但为什么不将值放在 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
【讨论】: