C#浮点数前一个数字

C#浮点数前一个数字,c#,C#,我需要在浮点数前取一个数字,在浮点数后取一个值。例如: 前:212.12345 之后:2.12345 有什么想法吗?假设您有: decimal x = 212.12345m; 您可以使用: 请注意,如果您关心准确的值,则数字应表示为a 另请参见:我的方法是找到数字210,然后减去它…. 将适用于任何数字以及小于10的数字 double f1 = 233.1234; double f2 = f1 - (((int)f1 / 10) * 10); 试试这个 double x = 1; var

我需要在浮点数前取一个数字,在浮点数后取一个值。例如:

前:212.12345
之后:2.12345

有什么想法吗?

假设您有:

decimal x = 212.12345m;
您可以使用:

请注意,如果您关心准确的值,则数字应表示为a


另请参见:

我的方法是找到数字210,然后减去它….
将适用于任何数字以及小于10的数字

double f1 = 233.1234;
double f2 = f1 - (((int)f1 / 10) * 10);
试试这个

double x = 1; 
var y = x/10; 
var z = (y % (Math.Floor(y))) * 10;
您可以这样做:

public double GetFirst(double a)
{
    double b = a / 10.0;
    return (b - (int)b) * 10.0;
}
试试这个代码

string num = "15464612.12345";
string t = num.Split('.')[0];
num = t[t.Length-1].ToString() + "." + num.Split('.')[1];

我不知道C#API,但是如何将数字转换为字符串,然后用所需的数字创建一个子字符串,并再次将其解析为双精度?您可以将其转换为字符串,然后使用与indexOf方法相结合的子字符串方法。虽然如果精确的十进制数字很重要,OP应该考虑使用<代码>十进制< /代码>而不是<代码>双< /代码> @ JonSkeet -好点!这个问题提到了浮点,我不确定这对运算意味着什么。无论哪种方式,
%
都应该起作用。他删除了小数点前的两个数字12,因为212.12345需要是2.12345,模运算符怎么做?@Adil-这里的假设是
1234.5
->
4.5
,而不是
1.5
。虽然我同意这个问题写得很糟糕,但我误解了。你试过你的代码了吗?这将输出
2.125
。浮动不是很精确。如果您将更改为double,您也不会得到精确的结果:
2.12345000001369
@lazyberezovsky您是对的,float不太敏感,double更好,但有没有办法克服浮点精度?是的,有一种方法-使用
decimal
类型在许多情况下都不起作用,例如:
num=123845
区域设置将数字设置为指数表示1.546461212345e7
或交替使用
区域使用逗号而不是点式1546461212345
string num = "15464612.12345";
string t = num.Split('.')[0];
num = t[t.Length-1].ToString() + "." + num.Split('.')[1];