社区
VB基础类
帖子详情
如何保留小数点后3位,好象用FORMAT不行啊?
subill
2006-07-06 11:00:46
如何保留小数点后3位,如果尾数12.2也需要写成12.200
用过format(i,"#0.000")
formatnumber (i,3)
format(i,"#.000")
好象都不行,是我自己打错了?
谢谢大家
...全文
1543
26
打赏
收藏
如何保留小数点后3位,好象用FORMAT不行啊?
如何保留小数点后3位,如果尾数12.2也需要写成12.200 用过format(i,"#0.000") formatnumber (i,3) format(i,"#.000") 好象都不行,是我自己打错了? 谢谢大家
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
threenewbee
2006-07-07
打赏
举报
回复
///////////////////////////////////////////////////////////////
汗,最简单的方法
Dim i As Double
i = 3.1415926
i = Int(i * 1000) / 1000
Debug.Print i
///////////////////////////////////////////////////////////////
snowwolf80
2006-07-07
打赏
举报
回复
Private Sub Command1_Click()
Dim i As Single, j As Single
i = 2.125
j = Format(i, "#.000")
Print j
Print i
End Sub
一笑拔剑
2006-07-07
打赏
举报
回复
楼上的说得很清晰了
of123
2006-07-07
打赏
举报
回复
Private Sub Command1_Click()
Dim i As Integer, j As Integer
i = 2.125
j = Format(i, "#0.00")
Print j
i = FormatNumber(i, 3)
Print i
End Sub
我这样试验,发现不对啊?>
那位把成功的代码写下啊?谢谢
---------------------------------
首先,用 Single, Double 做 10 进制取舍都是有误差的,因为二进制小数和十进制小数之间不能完全精确转换。这样,在你做大量数据累加后,可能有误差。
建议采用 Currency 类型,他是用整数方式保存数值,精确到小数点后 4 位。
其次,你混淆了数据存储和显示的区别。一个数值,如果有 4 位小数,经过 FormatNumber(x,3)处理后,就只剩下 3 位小数;但如果它的小数位数小于 3,它不会有任何变化。显示时,也不会追加后缀 0。
如果需要在显示时有后缀 0,则需要将数字用 Format 函数转成字符串,然后显示字符串。
所以,你的问题有概念性错误。看看下例:
Dim m As Currency, n As Currency
Dim s As String
m = 1.23
n = FormatNumber(m, 3)
MsgBox n '1.23
s = Format(m, "0.000")
MsgBox s '1.230
m = 1.2345
n = FormatNumber(m, 3)
MsgBox n '1.235
s = Format(m, "0.000")
MsgBox s '1.235
lpb830820
2006-07-07
打赏
举报
回复
这么简单的问题都要这么多的贴吗?唉!!!!!!
僵哥
2006-07-07
打赏
举报
回复
VB本身的Round函数是一种银行式的四舍五入,而大部分的计算当中用不上,所以需要时须自行处理
僵哥
2006-07-07
打赏
举报
回复
'Round(expression [,numdecimalplaces])
Public Function Round(ByVal Number As Currency, Optional ByVal Position As Integer = 4) As Currency
Round = IIf((Number * (10 ^ Position) - Int(Number * (10 ^ Position))) >= 0.5, Int(Number * (10 ^ Position)) + 1, Int(Number * (10 ^ Position))) / (10 ^ Position)
End Function
羽毛之家
2006-07-07
打赏
举报
回复
这个肯定行的,原谅人家走进死胡同了
tripman
2006-07-07
打赏
举报
回复
这么个弱智贴怎么多人光顾呵呵
vansoft
2006-07-07
打赏
举报
回复
Round函数
描述
返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。
语法
Round(expression [,numdecimalplaces])
Round函数语法有如下几部分:
部分 描述
expression 必需的。要进行四舍五入运算的数值表达式。
numdecimalplaces 可选的。数字值,表示进行四舍五入运算时,小数点右边应保留的位数。如果忽略,则Round函数返回整数。
西雀
2006-07-07
打赏
举报
回复
format(str,"0.000")楼主你要是没好好看msdn,我鄙视你
一笑拔剑
2006-07-06
打赏
举报
回复
j = Format(i, "#0.00")
你不是少了个0
j = Format(i, "#0.000")
啊呀
2006-07-06
打赏
举报
回复
Dim a As Single '数据类型
a = 2.12
MsgBox Format(a, "0.000")
hanstins
2006-07-06
打赏
举报
回复
j As string
format 用字符型变量
subill
2006-07-06
打赏
举报
回复
Private Sub Command1_Click()
Dim i As Integer, j As Integer
i = 2.125
j = Format(i, "#0.00")
Print j
i = FormatNumber(i, 3)
Print i
End Sub
我这样试验,发现不对啊?>
那位把成功的代码写下啊?谢谢
verywzm
2006-07-06
打赏
举报
回复
试了,可以
qyflaoda
2006-07-06
打赏
举报
回复
应该没问题的
wxrwan
2006-07-06
打赏
举报
回复
dval=round(dval,3)
liuks
2006-07-06
打赏
举报
回复
as Integer不行,用single或者double
nevsong
2006-07-06
打赏
举报
回复
Format 函数
返回 Variant (String),其中含有一个表达式,它是根据格式表达式中的指令来格式化的。
语法
Format(expression[, format[, firstdayofweek[, firstweekofyear]]])
Format 函数的语法具有下面几个部分:
部分 说明
expression 必要参数。任何有效的表达式。
format 可选参数。有效的命名表达式或用户自定义格式表达式。
firstdayofweek 可选参数。常数,表示一星期的第一天。
firstweekofyear 可选参数。常数,表示一年的第一周。
设置值
firstdayofweek 参数有下面设置:
常数 值 说明
vbUseSystem 0 使用 NLS API 设置。
VbSunday 1 星期日(缺省)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
firstweekofyear 参数有下面设置:
常数 值 说明
vbUseSystem 0 使用 NLS API 设置。
vbFirstJan1 1 从包含一月一日的那一周开始(缺省)。
vbFirstFourDays 2 从本年第一周开始,而此周至少有四天在本年中。
VbFirstFullWeek 3 从本年第一周开始,而此周完全在本年中。
说明
格式化 作法
数字 使用预先定义的命名数值格式或创建用户自定义数值格式。
日期和时间 使用预先定义的命名日期/时间格式或创建用户自定义日期/时间格式。
日期和时间序数 使用日期和时间格式或数值格式。
字符串 创建自定义的字符串格式。
如果在格式化数字时没有指定 format,Format 会提供与 Str 函数类似的功能,尽管它是国际化的。然而,以 Format 作用在正数上不会保留正负号空间,而以 Str 的话则会。
加载更多回复(6)
python123温度转换答案_[Python3 练习] 001 温度转换1
题目:温度转换 I(1) 描述温度的刻画有两个不同体系:摄氏度 (Celsius) 和华氏度 (Fabrenheit)请编写程序将用户输入的华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度转换公式如下,C 表示摄氏度,F 表示华氏度????????????????????????????????????????????????????????????????????????????????????...
一、Oracle数据库
一、简单查询 1.查询数据库表所有的列 Select * from 表名; Select 列名,列名… from 表名; 2.起别名 Select 列名 [as 别名],列名 别名… from 表名; –正常情况 Select ename as 员工姓名,sal salary from emp; –别名正好是关键字,别名需要用””括起来 Select ename as “sele...
将数字转为二、十、十六进制字符串
MSDN的例子 Example 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 /*ITOA.C:Thisprogramconvertsintegerso
c/c++笔试题
微软亚洲技术中心的面试题!!! 1.进程和线程的差别。 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)调度:线程作为调度和分配的基本单
位
,进程作为拥有资源的基本单
位
(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行 (3)拥有资源:进程是拥有资源的独立单
位
,线程不拥有系统资源,但可以访问隶属于进程的资源.
PostgreSQL SQL 语言:函数和操作符
本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权。 1. 逻辑操作符 常用的逻辑操作符有: AND OR NOT SQL使用三值的逻辑系统,包括真、假和null,null表示"未知"。观察下面的真值表: 操作符AND和OR是可交换的,也就是说,你可以交换左右操作数而不影响结果。 2. 比较函数和操作符 常见的比较操作符都可用...
VB基础类
7,785
社区成员
197,585
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章