将十进制值分成两个值(前后十进制)
本文关键字:十进制 两个 | 更新日期: 2023-09-27 18:19:19
如何将一个十进制值分解为整数,第一个值应为小数前的值,另一个值应为小数后的值。
问题:小数点和位数都不知道;例:
double value = 2635.215;
int firstValue = 2635; // Should be
int secondValue = 215; // Should be
一个可能的解决方案:
using System.Globalization;
namespace DecimalSplit
{
class Program
{
static void Main(string[] args)
{
double value = 2635.215;
var values = value.ToString(CultureInfo.InvariantCulture).Split('.');
int firstValue = int.Parse(values[0]);
int secondValue = int.Parse(values[1]);
}
}
}
使用的CultureInfo 。当转换为String时,InvariantCulture将确保小数分隔符为.
,并且分割将在正确的位置进行。在我们的文化中小数点分隔符是,
例如
可以使用String.Split
方法分割字符串。将double
转换为字符串,然后根据.
这个问题是无法解决的,因为双精度值可以有非常多的十进制数字,所以您不能保证能够用整数表示它们。我能给你的最接近的是这个,它不适用于整数,但适用于双精度:
double left = System.Math.Floor(value);
double right = left - value;
这是一个小改进的rratzvan Panda的例子。
在int secondValue = int.Parse(values[1]);
中,如果解析一个不带小数的值,将引发异常。
另一点是,第二个值最好使用字符串。参见例3。
static void Main(string[] args)
{
double val1 = 2635.215;
Console.Out.WriteLine(GetFirstValue(val1)); // out 2635
Console.Out.WriteLine(GetSecondValue(val1)); // out 215
double val2 = 2;
Console.Out.WriteLine(GetFirstValue(val2)); // out 2
Console.Out.WriteLine(GetSecondValue(val2)); // out ''
double val3 = 3.04;
Console.Out.WriteLine(GetFirstValue(val3)); // out 3
Console.Out.WriteLine(GetSecondValue(val3)); // out 04
}
public static string GetFirstValue(double value)
{
var values = value.ToString(CultureInfo.InvariantCulture).Split('.');
return values[0];
}
public static string GetSecondValue(double value)
{
var values = value.ToString(CultureInfo.InvariantCulture).Split('.');
return values.Length > 1 ? values[1] : string.Empty;
}
try:
double value = 2635.215;
string a = value.ToString();
string[] b =a.Split('.');
int firstValue= int.Parse(b[0]);
int secondValue= int.Parse(b[1]);
你可以这样做:
double decimalNumber = 123.456;
var numbersBeforeDecimalPoint = Math.Truncate(decimalNumber);
var numbersAfterDecimalPoint = decimalNumber - numbersBeforeDecimalPoint;
使用Math.Truncate
我们只能得到整数,然后我们可以将其与原始数字结合使用来得到小数部分。
这将得到123
和0.456
作为结果。
不确定这是否正是你所追求的(我欣赏你可能想要123
和456
) -如果你需要更具体的格式,这里有很多很好的字符串操作建议。