c#编计算器小数点的问题

landry123 2009-03-26 03:57:34
private void button11_Click(object sender, EventArgs e)//小数点按钮
{
num += ".";
this.textBox1.Text += ".";
}
如果连续点几下就会出错,因为字符串型转为数值型,数值没有连续几个小数点的,该如何解决这个问题呢?希望大家帮帮忙,谢谢
...全文
765 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
BeyondEternity 2012-05-19
  • 打赏
  • 举报
回复
private void btnpoint_Click(object sender, EventArgs e)//make a point
{
Flag = 5;
SoundPlayer sp = new SoundPlayer();
sp.SoundLocation = @"D:\All Downloads\play\年.wav";
sp.Play();
if (!textio.Text.Contains(".") && !textio.Text.StartsWith("+") && !textio.Text.EndsWith("-") && !textio.Text.StartsWith("X") && !textio.Text.StartsWith("÷") && !textio.Text.StartsWith("."))
{
textio.Text = textio.Text + ".";
}
else if (textio.Text.Contains(".") || textio.Text.Contains("+") || textio.Text.Contains("-") || textio.Text.Contains("X") || textio.Text.Contains("÷") || textio.Text.Contains("."))
{
numb = double.Parse(textio.Text);
}
textio.Focus();
}

我想做异常处理,但是计算3+/*(-9)都没实现
hovoy 2009-11-20
  • 打赏
  • 举报
回复


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace MDI
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}


private void Form1_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.IndexOf(".") < 0)
{
textBox1.Text = textBox1.Text + ".";
}
}
}
}

lazyboysqaz 2009-11-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 along0401 的回复:]
引用 6 楼 sleep0110 的回复:
C# codebool b=false;privatevoid point_Click(object sender, EventArgs e)
        {if (!b)
            {
                num+=".";//------                textBox1.Text+=".";//------                b=true;//标记---的地方优点啰嗦,只用+=一次就可以了,等值输入完成了在直接给变量赋值不就得了?为什么非要这么麻烦呢?            }
        }
等这个数字输入完的时候(也就是说按下了运算符号的时候)
C# codeprivatevoid point_Click(object sender, EventArgs e)
        {//计算过程完成后          b= fales;
        }

基本上就这样吧

我写的计算器是带退格键的  这样的话如果退格删掉小数点的话B的值还是不会改变啊
[/Quote]
点退格键事件中你判断下TEXTBOX中存在点吗,不存在b=false,存在b=true
along0401 2009-11-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sleep0110 的回复:]
C# codebool b=false;privatevoid point_Click(object sender, EventArgs e)
{if (!b)
{
num+=".";//------ textBox1.Text+=".";//------ b=true;//标记---的地方优点啰嗦,只用+=一次就可以了,等值输入完成了在直接给变量赋值不就得了?为什么非要这么麻烦呢? }
}
等这个数字输入完的时候(也就是说按下了运算符号的时候)
C# codeprivatevoid point_Click(object sender, EventArgs e)
{//计算过程完成后 b= fales;
}

基本上就这样吧
[/Quote]
我写的计算器是带退格键的 这样的话如果退格删掉小数点的话B的值还是不会改变啊
睡神在睡觉 2009-03-26
  • 打赏
  • 举报
回复
 bool b = false;
private void point_Click(object sender, EventArgs e)
{
if (!b)
{
num += ".";//------
textBox1.Text += ".";//------
b = true;
//标记---的地方优点啰嗦,只用+=一次就可以了,等值输入完成了在直接给变量赋值不就得了?为什么非要这么麻烦呢?
}
}

等这个数字输入完的时候(也就是说按下了运算符号的时候)
 private void point_Click(object sender, EventArgs e)
{
//计算过程完成后
b = fales;
}


基本上就这样吧
landry123 2009-03-26
  • 打赏
  • 举报
回复
楼上说的方法我都清楚,只是我刚接触c#,不知道怎么用它的语法表达出来,谁能给段代码提示吗?
cl9876 2009-03-26
  • 打赏
  • 举报
回复
可以找个标志位,标志这个数值有小数点,有小数点的数值点不加到字符串里,否则加进去就可以了,可以用stringbuilder
天乐 2009-03-26
  • 打赏
  • 举报
回复
不要那么老实的人家点一下你就附加一次
devilli 2009-03-26
  • 打赏
  • 举报
回复
那你在小数点按钮的单击事件里,判断下this.textBox1.Text里边的小数点的数量吧
如果多于一个,就不让输入呗
天乐 2009-03-26
  • 打赏
  • 举报
回复
接受输入的时候,无视连续的多个点,合并为一个点


有了一个点之后,无视新的点

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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