VB.NetC#-取小数点后几位但不四舍五入的方法

参考来源: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.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值