小弟,是第一次来提问,希望大家帮我解决一下
我在添加一条信息的时候,如果文本框的Text里的值是1/8或者9/2的话,我保存到数据库里的值是0或者4,但是这样的话,数据就不对啦,我想保留2位,但是除非用户在写表达式的时候写成1.00/8.00或者9.00/2.00那样数据库里的值才会是0.13或者4.50,因为我现在在做年月报表,不知道哪位高手做过,对于这样的问题是怎么处理的,现在我想到的只有2个方法,1是控制不让用户输入表达式,只能是具体的值。2就是可以输入表达式,但是做起来有点复杂。希望做过这类系统的朋友,可以给点提示。在线等!!!

解决方案 »

  1.   

    一个比较死的方法,分析text的文本,如果有 '/'号,split 开,计算它的值,否则...
      

  2.   

    把可能的运算符存入一个数组
    比如 char[] c = {'+','-','/','*','(',')'};
    然后把文本框中的值 string[] s = TextBox.Text.Split(c);
    把 s[i] 转成single,替换TextBox.Text,
    在运算
      

  3.   

    小心可能会有这种情况 :数组里可能有相同的值,这时替换回TextBox.Text时,只能替换一次。
      

  4.   

    谢谢大家,但是小弟我能力有限,还是有些不明白,表达式值的类,到底是一个什么样的一个类
    就像stpangpang(胖在一方) 这个兄弟说的,万一表达式中存在多个运算符或大小括号,我昨天想了一下,整个思路一下子变得很混乱,真的不好搞
      

  5.   

    说实话我没太懂大家的意思,为什么不直接针对问题,不知这样行不行:用户输入后,做任何事情前先把TextBox里的值做个转换:textBox1.Text = Regex.Replace(textBox1.Text,@"(?<![\.\d])\d+(?![\.\d])","$&.00");