C# 如何删除C中数字的小数部分#

C# 如何删除C中数字的小数部分#,c#,C#,我有两个字的号码。 双a=12.00 我必须通过删除.00使其成为12 请帮我使用 那么12和12.00与double值具有完全相同的表示形式。你是想以双倍的或其他方式结束吗?(例如,如果确信值在正确的范围内,并且截断效果是您想要的,则可以强制转换为int。) 您可能也想看看这些方法: (包含如何处理中点的变体) 如果只需要double的整数部分,请使用显式转换为int int number = (int) a; 您可以使用,但这会将数字四舍五入到最接近的整数 值,四舍五入到最接近的3

我有两个字的号码。 双a=12.00 我必须通过删除.00使其成为12

请帮我使用


那么
12
12.00
double
值具有完全相同的表示形式。你是想以双倍的或其他方式结束吗?(例如,如果确信值在正确的范围内,并且截断效果是您想要的,则可以强制转换为
int
。)

您可能也想看看这些方法:

  • (包含如何处理中点的变体)

如果只需要double的整数部分,请使用显式转换为int

int number = (int) a;
您可以使用,但这会将数字四舍五入到最接近的整数

值,四舍五入到最接近的32位有符号整数。如果值为 在两个整数中间,返回偶数;那个 是,4.5转换为4,5.5转换为6

使用

它从小数中删除小数部分

int i = (int)Decimal.Truncate(12.66m)
这里有一个窍门

a =  double.Parse(a.ToString().Split(',')[0])

阅读您的所有评论,我认为您只是试图以某种格式显示它,而不是将其值/转换为
int

我认为将
12.00
显示为
“12”
的最简单方法是使用字符串格式说明符

double val = 12.00;

string displayed_value = val.ToString("N0"); // Output will be "12"
这个解决方案最好的部分是,它将
1200.00
更改为
“1200”
(添加一个逗号),这对于显示某物的金额/货币/价格非常有用

更多信息可在此处找到:

因为点后的数字只有零,所以最好的解决方案是使用数学。舍入(MyNumber)

双舍入仍然会得到0.00。相反,如果你只想要12,你应该试着把它转换成整数,去掉小数部分!查看@Habib的显式强制转换解决方案!你想在哪里“达到12岁”
a.ToString()
?这可能会对您有所帮助。您好,谢谢您的建议。我有一个值为12.00的数字。我只想将其设置为12。我想删除.00。但我无法使用代码re=Convert.ToDouble(txtmodifydtotalamount.Text.Trim(),CultureInfo.InvariantCulture)执行12.0的操作;如果(re-Math.Truncate(re)==0.00)re=Math.Truncate(re)@Divya:虽然它们是相同的值-12,12.0,12.00,12.00000都将具有与
double
值相同的表示形式。如果您的意思是,当您将其格式化为字符串时,它将显示为“12.0”,那么这是另一回事,而且只是字符串格式化的一部分。或者,如果你总是得到一个整数,你只想把它当作一个整数来处理,只需将其转换为
int
long
。我在sql数据库
decimal(18,3)
中有一个输入值:1.000,11.124,127.414,1377.147,预期输出:1,11,127,1377,你看,我必须删除小数后的刻度,我需要小心,这样我才能使用
int
进行计算,那么我应该使用
int
还是使用
Math.Round
还是使用string拆分它?@stom:你希望1.9的结果是什么?还是-0.4?还是-0.6?请注意,
decimal(18,3)
可以存储比
int
更大的数字…@stom:好的,所以除了范围问题之外,只需转换到
int
就可以了。你注意舍入错误吗?嗯,什么是“舍入错误”?
(int)a中没有舍入(第一部分),
Convert.ToInt32
中的舍入不是舍入错误,而是默认的
float f=1.4f;int截断=(int)((f-(int)f)*100)截断的
变量的期望是什么?40? 不,是39。因为四舍五入Error@MehdiKhademloo,舍入误差是由算术造成的,因为“
1.4
”`并不是真正的
1.4
(因为它是一个浮点数),(为了测试它,将类型更改为十进制,比如
decimal f=1.4m;
),但是,所有这些都与所问的问题无关。@MehdiKhademloo,pure
(int)a
将起作用,对于
1.4f
,它将是
1
,确切地说是
1
,因为它是一个整数,所以没有精度点。因此,就转换为
int
而言,没有舍入错误。此答案应标记为最佳答案,因为它的执行安全性是区域性变量,仅适用于使用逗号作为小数分隔符的区域设置。这种方法是脆弱的,不应该使用。
double val = 12.00;

string displayed_value = val.ToString("N0"); // Output will be "12"