Decimal a=Convert.ToDecimal(textBox1.Text);
Decimal b=Math.Round(a,0);
if (b>a)
b=b-1;
Decimal c=a-b;
textBox2.Text=b.ToString ();
textBox3.Text=b.ToString ();
a为原来的部份。
b为整数部分。
c为小数部份。
俺就这么处理了。有那位同仁可以指出什么更方便的办法吗?
Decimal b=Math.Round(a,0);
if (b>a)
b=b-1;
Decimal c=a-b;
textBox2.Text=b.ToString ();
textBox3.Text=b.ToString ();
a为原来的部份。
b为整数部分。
c为小数部份。
俺就这么处理了。有那位同仁可以指出什么更方便的办法吗?
int b,c;
string[] ss=new string[2];
string s=d.ToString();
//把这个数按照小数点分离到string数组
ss=s.Split('.');
b=int.Parse(ss[0]);
c=int.Parse(ss[1]);
Console.WriteLine(b);
Console.WriteLine(c);
其实字符串的计算比数字的计算更要消耗资源,而且还要转换好几次,我也曾想用字符串这么做,但因涉及的大量这样的重复计算,会很慢。后几分钟想想,我用的是Decimal 类形,只要精确到小数后四位,也没有误差的,速度也可以接受。是否有更快更简捷的算法吗?兄弟们~~
double c=d%1;
double b=d-c;
Decimal是所有数中最长的128 位数据类型,double是64位数据类型.Decimal值最多精确到 28th 小数位数。另:求余是一个好方法,多谢您,但是是有误差的计算了。
如:
double a=1.06;
double c=a%1;
double b=a-c;
c的返回值大概是
0.0600000000000001
------------------
Decimal=122.23M;
Decimal b=Math.Round(a,0);
if (b>a)
b=b-1;
Decimal c=a-b;
这样结果是对了,但不知是否最优~
----------------附上MSDN帮助:decimal 类型是适合财务和货币计算的 128 位数据类型。decimal 类型可以表示具有 28 或 29 个有效位数、从 1.0 × 10?28 到大约 7.9 × 1028 范围内的值。decimal 类型的有限值集的形式为 s × m × 10e,其中 s 为 1 或 –1、0 ≤ m < 296 以及 ?28 ≤ e ≤ 0。decimal 类型不支持有符号的零、无穷大或 NaN。decimal 表示为以 10 的幂计算的 96 位整数。对于绝对值小于 1.0m 的 decimal,值最多精确到 28th 小数位数。对于绝对值大于或等于 1.0m 的 decimal,值精确到 28 或 29 位数。
c=a-b取余数
有什么不好吗?
string[] ss = a.ToString().Split('.');
ss[0] = 6;
ss[1] = 75;知道这两个值了,你该知道如何去得到数值型的值了吧~~~
rengo()茶凉()的思路不错
好象int b =Convert.ToInt16(a-0.5M)这个算法最简捷了吧,大家同意吗?Happyboy_zjy(阳光男孩) 你也不看看前面大家的讨论你的想法“地球人都知道呀”~
好啦,到此我想也应散分了,多谢各位的参与.