C#浮点数前一个数字
我需要在浮点数前取一个数字,在浮点数后取一个值。例如: 前:212.12345C#浮点数前一个数字,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
之后: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];