参考来源:http://ebreezee.itpub.net/post/23931/470549
方法1:
int n=3;//例如取小数位3位
double a=1.1234567;
int index = a.ToString().IndexOf(".");//取小数点所在位置索引
if (index + 1 + n > a.ToString().Length|| a.ToString().IndexOf(".")==-1)//索引大于长度或a为整数
string a3 = a.ToString();//a3以字符形式存放三位小数
else
string a3 = a.ToString().Substring(0, index + 1 + n);//取需要的长度
方法2://更简单的方法见方法2
double a=2.3456;
a= Math.Floor(a* 1000) / 1000;//取三位小数,2.345
double b=1;
b= Math.Floor(b* 1000) / 1000;//1.0
方法3:
(int)(a*1000)/1000好像也可以
-------
在一个程序中要保留4位数据。第5位数据以后的截掉。不四舍五入。
采用方法2。
网络上说:
Round 四舍六入
Format 四舍五入
--
自己用Format函数也会四舍五入的:
?format(0.23645654,"#0.0000")
"0.2365"
?format(0.23644654,"#0.0000")
"0.2364"
?formatnumber(0.23456,4,TriState.True ,TriState.False )
"0.2346"
-----------------------
还有一种方法:Int(123.456 * 100 + 0.5) / 100 类似四舍五入的。
---------------------
Int、Fix 函数
Int 和 Fix 函数都移除 Number 的小数部分并返回得到的整数值。
Int 和 Fix 函数之间的区别在于:如果 Number 为负,则 Int 返回小于或等于 Number 的第一个负整数,而 Fix 返回大于或等于 Number 的第一个负整数。例如,Int 将 -8.4 转换成 -9,而 Fix 将 -8.4 转换成 -8。
Fix(number) 等效于 Sign(number) * Int(Abs(number)).
本示例演示了 Int 和 Fix 函数如何返回数字的整数部分。对于负数参数的情况,Int 函数返回小于或等于该数字的第一个负整数,而 Fix 函数返回大于或等于该数字的第一个负整数。下面的示例要求您指定 Option Strict Off,因为从类型 Double 到类型 Integer 的隐式转换在 Option Strict On 下不允许:
Visual Basic
' This code requires Option Strict Off
Dim MyNumber As Integer
MyNumber = Int(99.8) ' Returns 99.
MyNumber = Fix(99.8) ' Returns 99.
MyNumber = Int(-99.8) ' Returns -100.
MyNumber = Fix(-99.8) ' Returns -99.
MyNumber = Int(-99.2) ' Returns -100.
MyNumber = Fix(-99.2) ' Returns -99.
在 Option Strict Off 的情况下,可以使用 CInt 函数将其他数据类型显式转换为类型 Integer。但是,CInt 并非截去数字的小数部分,而是舍入为最接近的整数。例如:
MyNumber = CInt(99.8) ' Returns 100.
MyNumber = CInt(-99.8) ' Returns -100.
MyNumber = CInt(-99.2) ' Returns -99.
可以先调用 Fix 或 Int,然后对调用后的结果使用 CInt 函数,以便在显式转换为整数时不四舍五入。例如:
MyNumber = CInt(Fix(99.8)) ' Returns 99.
MyNumber = CInt(Int(99.8)) ' Returns 99.