C# 带小数点儿的字符串(如:"100.5"),如何只取整数部分

qishibulihai 2011-11-14 12:05:56
C# 带小数点儿的字符串(如:"100.6"),如何只取整数部分

我想要的结果是100

string na = "100.6";
int a = int.Parse(na);
int a = int(na);
都是执行的时候报错的,带小数点儿的参数是不可以的

Convert.Int32 这个方法是四舍五入(还是五舍六入来着)的

又不能用截取字符串的形式,而且我也试过了先转换成浮点型在转成int,也是不成功的都是在
...全文
8767 32 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
绿领巾童鞋 2011-11-14
  • 打赏
  • 举报
回复
强转为INT就可以,自动去掉小数点后面的
Daqing 2011-11-14
  • 打赏
  • 举报
回复
            string na = "100.6";
Console.WriteLine(Convert.ToInt32 (Math.Truncate(Convert.ToDouble(na))));
天二天 2011-11-14
  • 打赏
  • 举报
回复
string na = "100.6";
string[] arrna = na.Split('.');
Response.Write(arrna[0]);
  • 打赏
  • 举报
回复
正则最擅长做这种事情
 string tempStr = "100.6 10000.06 23";
tempStr = Regex.Replace(tempStr,@"(\d+)(\.\d+)?","$1");//输出:100 10000 23
yibey 2011-11-14
  • 打赏
  • 举报
回复
直接
double a1 = 100.5;
int fb = (int)a1;
诺维斯基 2011-11-14
  • 打赏
  • 举报
回复
string na = "100.6";
string[] arrna = na.Split('.');
Response.Write(arrna[0]);
Alexander 2011-11-14
  • 打赏
  • 举报
回复
字符串截一下不就好了……


int a=int.Parse(na.Substring(0,na.IndexOf('.')));
铜臂阿铁木 2011-11-14
  • 打赏
  • 举报
回复
Split…… SubString+IndexOf……貌似都行
qishibulihai 2011-11-14
  • 打赏
  • 举报
回复
自己顶
wmjy 2011-11-14
  • 打赏
  • 举报
回复
用int变整型再变?
youzelin 2011-11-14
  • 打赏
  • 举报
回复

// 如果输入的是字符串,而且输入的确定是正确的浮点数格式
int a = (int)Int32.Parse(number.SubString(0, s.IndexOf('.'));
// 如果输入的是浮点数
int a = (int)number; // 截断
DSIOF3KIDSKTR 2011-11-14
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 yanzhiyong 的回复:]

1. Math.Floor & Math.Ceiling(Floor——出头舍;Ceiling——出头算)



Math.Floor:

返回小于或等于指定小数的最大整数值。



Math.Floor(3.21);//3

Math.Floor(5.952);//5

Math.Floor(0.64);//0

Math.Floor(-0.64);……
[/Quote]
good
yezhendong185 2011-11-14
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 yezhendong185 的回复:]
C# code

string na = "100.6";
double a = double.Parse(na);
int b = (int)Math.Floor(a);
[/Quote]

string na = "100.6";
double a = double.Parse(na);
int b = (int)Math.Truncate(a);

这样好像准确一些。
yezhendong185 2011-11-14
  • 打赏
  • 举报
回复

string na = "100.6";
double a = double.Parse(na);
int b = (int)Math.Floor(a);
铜臂阿铁木 2011-11-14
  • 打赏
  • 举报
回复


string na = "106.6";
int dot = na.IndexOf(".");
int subZero = na.IndexOf("-");
int result = 0;
for(int i=subZero == -1 ? 1:0; i < dot; i++)
{
result = result + (int)(na[i]-48)*Math.Pow(10,i);
}


return result;






错了 应该是这样子的
yezhendong185 2011-11-14
  • 打赏
  • 举报
回复
Math
LZ看看里面方法是否能满足你的需求
铜臂阿铁木 2011-11-14
  • 打赏
  • 举报
回复

string na = "106.6";
int dot = na.IndexOf(".");
int subZero = na.IndexOf("-");
int result = 0;
if(subZero != -1)
{
for(int i=subZero == -1 ? 1:0; i < dot; i++)
{
result = result + (int)(na[i]-48)*Math.Pow(10,i);
}

}

return result;


不是喜欢麻烦的么……这个麻烦,用这个吧,还显得原始古朴牛逼。
大黄鸭在发光 2011-11-14
  • 打赏
  • 举报
回复
Decimal.Floor(106.6);
yanzhiyong 2011-11-14
  • 打赏
  • 举报
回复
1. Math.Floor & Math.Ceiling(Floor——出头舍;Ceiling——出头算)



Math.Floor:

返回小于或等于指定小数的最大整数值。



Math.Floor(3.21);//3

Math.Floor(5.952);//5

Math.Floor(0.64);//0

Math.Floor(-0.64);//-1

Math.Floor(-5.2);//-6

Math.Floor(-5.8);//-6



Math.Ceiling:

返回大于或等于指定小数的最小整数值。



Math.Ceiling(3.21);//4

Math.Ceiling(5.952);//6

Math.Ceiling(0.64);//1

Math.Ceiling(-0.64);//0

Math.Ceiling(-5.2);//-5

Math.Ceiling(-5.8);//-5



注意:

返回类型为Double或者Decimal。





2. Math.Truncate 取整/截断



作用:

计算指定小数的整数部分。



示例:

Math.Truncate(3.21);//3

Math.Truncate(5.952);//5

Math.Truncate(0.64);//0

Math.Truncate(-0.64);//0

Math.Truncate(-5.2);//-5

Math.Truncate(-5.8);//-5



注意:

返回类型为Double或者Decimal。





3. Math.Round 舍入



作用:

Math.Round采取的舍入方式和Convert.ToInt32(Double)一样,都是使用bankers' rounding 规则(四舍六入五成双)



示例:

Math.Round(3.21);//3

Math.Round(5.5);//6

Math.Round(4.5);//4

Math.Round(-0.64);//-1

Math.Round(-5.5);//-6

Math.Round(-4.5);//-4



小数取舍:

Math.Round(Double, Int32),其中Int32指定返回值的小数位数。



示例:

Math.Round(3.44, 1); //Returns 3.4.

Math.Round(3.45, 1); //Returns 3.4.

Math.Round(3.46, 1); //Returns 3.5.



Math.Round(4.34, 1); // Returns 4.3

Math.Round(4.35, 1); // Returns 4.4

Math.Round(4.36, 1); // Returns 4.4

tengjian1981 2011-11-14
  • 打赏
  • 举报
回复


string na = "106.6";
int result =Convert.Int32(Convert.ToDouble(na)-0.5);


加载更多回复(12)

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧