计算器程序 小数点问题求助

love1401049 2015-06-03 07:32:02
Dim v As Boolean
Dim s As Integer
Dim x As Double
Dim y As Double
Private Sub Command1_Click(Index As Integer)
If Form1.Tag = "s" Then

If Index = 10 Then
Text1.Text = "0."
Else
Text1.Text = Command1(Index).Caption
End If
Form1.Tag = ""
Else
Text1.Text = Text1.Text & Command1(Index).Caption
End If

End Sub

Private Sub Command2_Click(Index As Integer)


Form1.Tag = "s"


If v Then
x = Val(Text1.Text)
v = Not v


Else
y = Val(Text1.Text)
Select Case s
Case 0
Text1.Text = x + y
Case 1
Text1.Text = x - y
Case 2
Text1.Text = x * y
Case 3
If y <> 0 Then
Text1.Text = x / y
Else
MsgBox ("不能以0为除数")
Text1.Text = x
v = False
End If
Case 4
y = 0
v = False
End Select
x = Val(Text1.Text)
End If
s = Index


End Sub
...全文
425 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-06-08
  • 打赏
  • 举报
回复
不同数值对应不同格式 (Format 函数) 用户自定义数值格式表达式可以有一至四个区段,各区段间以分号隔开。但如果 format 函数的参数含有命名数值格式,则只能有一个区段。 如果使用 其结果为 只有一个区段 格式表达式应用到所有值。 两个区段 第一个区段应用到正值或零,第二个区段应用到负值。 三个区段 第一个区段应用到正值,第二个区段应用到负值,第三个区段应用到零。 四个区段 第一个区段应用到正值,第二个区段应用到负值,第三个区段应用到零,第四个区段应用到 Null 值。 下面的例子有两个区段:第一个区段定义正值和零的格式;第二个区段定义负值。 "$#,##0;($#,##0)" 如果分号之间没有格式,那么遗漏的区段将以正值的格式来表示。例如,下面的格式以第一个区段显示正值及负值,而如果值为零时,则显示 "Zero"。 "$#,##0;;\Z\e\r\o" 用户自定义数值格式 (Format 函数) 下面表格标识了一些可用来创建用户自定义数值格式的字符: 字符 说明 无 显示没有格式的数值。 (0) 数字占位符。显示一位数字或是零。如果表达式在格式字符串中 0 的位置上有一位数字存在,那么就显示出来;否则,就以零显示。如果数值的位数少于格式表达式中零的位数(无论是小数点的左方或右方),那么就把前面或后面的零补足。如果数值的小数点右方位数多于格式表达式中小数点右面零的位数,那么就四舍五入到有零的位数的最后一位。如果数值的小数点左方位数多于格式表达式中小数点左面零的位数,那么多出的部分都要不加修饰地显示出来。 (#) 数字占位符。显示一位数字或什么都不显示。如果表达式在格式字符串中“#”的位置上有数字存在,那么就显示出来;否则,该位置就什么都不显示。 此符号的工作原理和“0”数字占位符大致相同,不同之处只有在当表达式中数值的位数少于“#”的位数(无论是小数点左方或右方)时,不会把前面或后面的零显示出来。 (.) 小数点占位符。在一些国别是用逗号来当小数点的。小数点占位符用来决定在小数点左右可显示多少位数。如果格式表达式在此符号左边只有正负号,那么小于 1 的数字将以小数点为开头。如想在小数前有“0”的话,那么请在小数点占位符前加上“0”这个数字占位符。小数点占位符的实际字符在格式输出时要看系统的数字格式而定。 (%) 百分比符号占位符。表达式乘以 100。而百分比字符 (%) 会插入到格式字符串中出现的位置上。 (,) 千分位符号占位符。在一些国别,是用句点来当千位符号。千位符号主要是把数值小数点左边超过四位数以上分出千位。如果格式中在数字占位符(0 或 #)周围包含有千分位符号,则指定的是标准的千分位符号使用法。两个邻近的千分位符号或一个千分位符号紧接在小数点左边(不管小数位是否指定),其意思为“将数值除以 1000,按需要四舍五入”。例如,可以用格式字符串 "##0,," 将 1 亿表示成 100。数值小于 1 百万的话表示成“0”,两个邻近的千分位符号除了紧接在小数点左边以外,在任何位置出现时均简单地视为指定了使用千分位符号。小数点占位符的真正字符在格式输出时,需视系统识别的数字格式而定。 (:) 时间分隔符。在一些国别,可能用其他符号来当时间分隔符。在格式化时间值时,时间分隔符可以用来分隔时、分和秒。时间分隔符的真正字符在格式输出时,取决于系统的设置。 (/) 日期分隔符。在一些国别,可能用其他符号来当日期分隔符。在格式化日期数值时,日期分隔符可以用来分隔年、月、日。日期分隔符的真正字符在格式输出时,取决于系统设置。 (E- E+ e- e+) 科学格式。如果格式表达式在 E-、E+、e- 或 e+ 的右方含有至少一个数字占位符(0 或 #),那么数值将表示成科学格式,而 E 或 e 会被安置在数字和指数之间。E 或 e 右方数字占位符的个数取决于指数位数。使用 E- 或 e- 时,会用减号来表示负的乘幂。使用 E+ 或 e+ 时,会用减号来表示负的乘幂并用加号来表示正的乘幂。 - + $ ( ) 显示一个原义字符。如想显示那些列出的字符之外的字符时,可以用反斜杠 ( \ ) 字符作前缀或以双引号 (" ") 括起来。 (\) 将格式字符串中下一个字符显示出来。如想显示一作为原义字符并有特殊含义的字符,可将此字符置于反斜杠 (\) 之后。反斜杠本身并不会显示出来。而使用反斜杠 (\) 的效果和使用双引号是一样的。如想显示反斜杠字符,可使用两个反斜杠 (\\)。 那些不能显示为原义字符的字符是日期格式字符和时间格式字符(a, c, d, h, m, n, p, q, s, t, w, y, / 和 :)、数值格式字符(#, 0, %, E, e, 逗点和句点)和字符串格式字符(@, &, <, > 和 !)。 ("ABC") 显示双引号 (" ") 之内的字符串。如在代码中想在 format 中包含一个字符串,必须用 Chr(34) 将文本括起来(34 为双引号 (") 的字符代码)。
vansoft 2015-06-08
  • 打赏
  • 举报
回复
按小数点时,先判断有没有小数点,有,忽略点击。 再判断有没有数字,有,直接加点,没有加0.
一如既往哈 2015-06-03
  • 打赏
  • 举报
回复
1、要想显示前置0,可以这样:Text1.Text = Format(x, "0.00"),这里假设有2位小数点 2、第2个问题就需要你自己设计和判断了
love1401049 2015-06-03
  • 打赏
  • 举报
回复
我直接点击小数点时,显示不出首位0 还有就是一直点击小数点会一直出现小数点

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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