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