GVKun编程网logo

如何创建3个操作数计算器(如何创建3个操作数计算器的函数)

27

本文的目的是介绍如何创建3个操作数计算器的详细情况,特别关注如何创建3个操作数计算器的函数的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解如何创建3个操作数计算器的机

本文的目的是介绍如何创建3个操作数计算器的详细情况,特别关注如何创建3个操作数计算器的函数的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解如何创建3个操作数计算器的机会,同时也不会遗漏关于android – 如何创建3个同样宽的TextView,它在屏幕上填充父级、c – SSE FP单元是否检测到0.0个操作数?、c – 操作符==的两个操作数的隐式转换、css – 创建3个完全相等的列,占据浏览器窗口宽度的100%的知识。

本文目录一览:

如何创建3个操作数计算器(如何创建3个操作数计算器的函数)

如何创建3个操作数计算器(如何创建3个操作数计算器的函数)

如何解决如何创建3个操作数计算器?

我正在做一个计算器项目,用2个操作数完成,但是努力编写代码并求解3个操作数calc。问题是当我这样做时,例如10 + 10 =(答案20)工作正常,但10 + 10 + 10 =(也答案20)。似乎忘记了第一个变量。

以下是我在vb2010上的代码,请告知我是否错过了什么。谢谢。

Dim first As Double
Dim second As Double
Dim third As Double
Dim answer As Double
Dim process As String

Private Sub Button15_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button15.Click
    first = Val(TextBox1.Text)
    TextBox1.Text = ""
    formula.Text = first & "x"
    process = "*"
End Sub

Private Sub Button14_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button14.Click
    first = Val(TextBox1.Text)
    TextBox1.Text = ""
    formula.Text = first & "+"
    process = "+"
End Sub

Private Sub Button12_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button12.Click
    first = "0"
    second = "0"
    answer = "0"
    formula.Text = ""
    TextBox1.Text = ""

End Sub

Private Sub Button16_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button16.Click

    If process = "+" Then
        second = Val(TextBox1.Text)
        formula.Text = first & "+" & second & "="
        answer = first + second
        TextBox1.Text = answer
    End If
    If process = "*" Then
        second = Val(TextBox1.Text)
        formula.Text = first & "x" & second & "="
        answer = first * second
        TextBox1.Text = answer
    End If
    If process = "/" Then
        second = Val(TextBox1.Text)
        formula.Text = first & "÷" & second & "="
        answer = first / second
        TextBox1.Text = answer
    End If

    If process = "-" Then
        second = Val(TextBox1.Text)
        formula.Text = first & "-" & second & "="
        answer = first - second
        TextBox1.Text = ""
    End If
   
End Sub


Private Sub Button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button2.Click
    first = Val(TextBox1.Text)
    TextBox1.Text = ""
    formula.Text = first & "-"
    process = "-"
End Sub

Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click
    first = Val(TextBox1.Text)
    TextBox1.Text = ""
    formula.Text = first & "÷"
    process = "/"
End Sub

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

android – 如何创建3个同样宽的TextView,它在屏幕上填充父级

android – 如何创建3个同样宽的TextView,它在屏幕上填充父级

HI,

你能否告诉我如何在屏幕上创建3个同样宽的TextView来填充父级?我尝试这样做,但TextView的宽度是不同的:它是149,89,89.

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent" android:layout_height="wrap_content"
     android:stretchColumns="*"
     android:shrinkColumns="*">
<TextView android:id="@+id/t1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_column="0"/>

<TextView android:id="@+id/t2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_column="1"/>

<TextView android:id="@+id/t3"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_column="2"/>

解决方法

<LinearLayout
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    >
    <TextView
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_weight="1"
    />
    <TextView
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_weight="1"
    />
    <TextView
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_weight="1"
    />
</LinearLayout>

c – SSE FP单元是否检测到0.0个操作数?

c – SSE FP单元是否检测到0.0个操作数?

根据我之前的 question,我的想法是在系数m_a,m_b为1.0或0.0时通过去除计算来优化算法.现在我尝试优化算法并得到一些我无法解释的奇怪结果.

第一个分析仪运行100k样品.从文件(!)读取参数值:

b0 = 1.0 b1 = -1.480838022915731 b2 = 1.0

a0 = 1.0 a1 = -1.784147570544337 a2 = 0.854309980957510

第二个分析仪运行相同的100k样本.从文件(!)读取参数值:

b0 = 1.0 b1 = -1.480838022915731 b2 = 1.0

a0 = 1.0 a1 = -1.784147570544337 a2 = 0.0 <---只有a2不同! 在图中,左侧的数字(灰色背景)表示所需的cpu周期.因为参数a2 = 0.0的清晰可见的第二次运行要快得多. 我检查了调试和发布代码之间的区别.发布代码更快(正如预期的那样).修改参数a2时,调试和释放代码具有相同的奇怪行为. 然后我检查了ASM代码.我注意到使用了SSE指令.这是有效的,因为我用/ arch:SSE2编译.因此我禁用了SSE.生成的代码不再使用SSE,性能不再依赖于参数值a2(如预期的那样) 因此,我得出的结论是,当使用SSE并且SSE引擎检测到a2为0.0时,它们是某种性能优势,因此省略了过时的乘法和减法.我从来没有听说过这个,并试图找到信息,但没有成功. 那么有人对我的表现结果有解释吗? 为完整起见,这是发布版本的相关ASM代码:

00F43EC0  mov         edx,dword ptr [ebx]  
00F43EC2  movss       xmm0,dword ptr [eax+edi*4]  
00F43EC7  cmp         edx,dword ptr [ebx+4]  
00F43ECA  je          $LN419+193h (0F43F9Dh)  
00F43ED0  mov         esi,dword ptr [ebx+4]  
00F43ED3  lea         eax,[edx+68h]  
00F43ED6  lea         ecx,[eax-68h]  
00F43ED9  cvtps2pd    xmm0,xmm0  
00F43EDC  cmp         ecx,esi  
00F43EDE  je          $LN419+180h (0F43F8Ah)  
00F43EE4  movss       xmm1,dword ptr [eax+4]  
00F43EE9  mov         ecx,dword ptr [eax]  
00F43EEB  mov         edx,dword ptr [eax-24h]  
00F43EEE  movss       xmm3,dword ptr [edx+4]  
00F43EF3  cvtps2pd    xmm1,xmm1  
00F43EF6  mulsd       xmm1,xmm0  
00F43EFA  movss       xmm0,dword ptr [ecx]  
00F43EFE  cvtps2pd    xmm4,xmm0  
00F43F01  cvtps2pd    xmm3,xmm3  
00F43F04  mulsd       xmm3,xmm4  
00F43F08  xorps       xmm2,xmm2  
00F43F0B  cvtpd2ps    xmm2,xmm1  
00F43F0F  movss       xmm1,dword ptr [ecx+4]  
00F43F14  cvtps2pd    xmm4,xmm1  
00F43F17  cvtps2pd    xmm2,xmm2  
00F43F1A  subsd       xmm2,xmm3  
00F43F1E  movss       xmm3,dword ptr [edx+8]  
00F43F23  mov         edx,dword ptr [eax-48h]  
00F43F26  cvtps2pd    xmm3,xmm3  
00F43F29  mulsd       xmm3,xmm4  
00F43F2D  subsd       xmm2,xmm3  
00F43F31  movss       xmm3,dword ptr [edx+4]  
00F43F36  cvtps2pd    xmm4,xmm0  
00F43F39  cvtps2pd    xmm3,xmm3  
00F43F3C  mulsd       xmm3,xmm4  
00F43F40  movss       xmm4,dword ptr [edx]  
00F43F44  cvtps2pd    xmm4,xmm4  
00F43F47  cvtpd2ps    xmm2,xmm2  
00F43F4B  xorps       xmm5,xmm5  
00F43F4E  cvtss2sd    xmm5,xmm2  
00F43F52  mulsd       xmm4,xmm5  
00F43F56  addsd       xmm3,xmm4  
00F43F5A  movss       xmm4,dword ptr [edx+8]  
00F43F5F  cvtps2pd    xmm1,xmm1  
00F43F62  movss       dword ptr [ecx+4],xmm0  
00F43F67  mov         edx,dword ptr [eax]  
00F43F69  cvtps2pd    xmm4,xmm4  
00F43F6C  mulsd       xmm4,xmm1  
00F43F70  addsd       xmm3,xmm4  
00F43F74  xorps       xmm1,xmm1  
00F43F77  cvtpd2ps    xmm1,xmm3  
00F43F7B  movss       dword ptr [edx],xmm2  
00F43F7F  movaps      xmm0,xmm1  
00F43F82  add         eax,70h  
00F43F85  jmp         $LN419+0CCh (0F43ED6h)  
00F43F8A  movss       xmm1,dword ptr [ebx+10h]  
00F43F8F  cvtps2pd    xmm1,xmm1  
00F43F92  mulsd       xmm1,xmm0  
00F43F96  xorps       xmm0,xmm0  
00F43F99  cvtpd2ps    xmm0,xmm1  
00F43F9D  mov         eax,dword ptr [ebp-4Ch]  
00F43FA0  movss       dword ptr [eax+edi*4],xmm0  
00F43FA5  mov         ecx,dword ptr [ebp-38h]  
00F43FA8  mov         eax,dword ptr [ebp-3Ch]  
00F43FAB  sub         ecx,eax  
00F43FAD  inc         edi  
00F43FAE  sar         ecx,2  
00F43FB1  cmp         edi,ecx  
00F43FB3  jb          $LN419+0B6h (0F43EC0h)

编辑:按发布代码替换调试ASM代码.

解决方法

SSE上的FP乘法没有早期出局.这是一个完全流水线操作,延迟时间短,因此增加早期输出会使指令退出变得复杂,同时提供零性能优势.在现代处理器上通常具有数据相关执行特性的唯一指令是除法和平方根(忽略次正规,这会影响更广泛的指令).英特尔和AMD都广泛记录了这一点,Agner Fog也独立记录了这一点.

那么为什么你会看到性能的变化呢?最可能的解释是由于输入或结果不正常而遇到失速;这与DSP滤波器和延迟非常相似,就像你拥有的那样.如果没有看到你的代码和输入数据,就不可能确定这是发生了什么,但它是迄今为止最可能的解释.如果是这样,您可以通过在MXCSR中设置DAZ和FTZ位来解决问题.

英特尔文档:
http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf(请参阅附录中的延迟表,注意mulss和mulsd有固定值.)

AMD 16h指令延迟(excel电子表格):
http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/AMD64_16h_InstrLatency_1.1.xlsx

Agner Fog的Intel和AMD指令延迟表:
http://www.agner.org/optimize/instruction_tables.pdf

c – 操作符==的两个操作数的隐式转换

c – 操作符==的两个操作数的隐式转换

即使没有定义相等的运算符,下面的代码编译并执行没有错误:
class A {public:    operator bool() const { return true; }};int main(){    A a,b;    a == b; //why does this compile?    return 0;}

对于一个== b而言内部发生的是对两个操作数都调用了运算符bool()const,然后将两个布尔值进行比较,以相等(这发生在我们的生产代码中,类A是智能指针类型,并在语义上给出可疑的结果).

我的问题是:C标准中的什么规则允许在这种情况下两个操作数的隐式转换?我可以理解,如果另一个操作数已经是一个bool,而不是两个操作数,一个操作数将被隐式转换为bool以进行相等的测试.

解决方法

I can understand that one operand would be implicitly converted …,but not both

然后你被误解了编辑:根据专家的评论,参数依赖查找似乎是一个你的假设是正确的情况.但你的不是ADL的例子.

What rule in the C++ standard allows for the implicit conversion of both operands

从标准草案:

[over.match] (2.9)

  • Then the best viable function is selected based on the implicit conversion sequences (13.3.3.1) needed
    to match each argument to the corresponding parameter of each viable function.

我强调“每个论据”.不是“单一论证”.

css – 创建3个完全相等的列,占据浏览器窗口宽度的100%

css – 创建3个完全相等的列,占据浏览器窗口宽度的100%

我有3个相同尺寸的正方形图像相互浮动。我想要三个图像,总共占据了浏览器窗口宽度的100%,没有间隙。给每个图像的宽度为33.33333333%在Firefox中工作,但在大多数其他浏览器中的某些宽度不起作用,有时可能会在第三个图像的右侧留下一个小间隙。

这可能是许多解决方案的问题,但我迄今为止所尝试的工作可靠。

解决方法

尝试这个:

HTML

<div>
    <div>
        <img src="http://nssdc.gsfc.nasa.gov/planetary/image/neptune_voy2.jpg" />
    </div>
    <div>
        <img src="http://nssdc.gsfc.nasa.gov/planetary/image/neptune_voy2.jpg" />
    </div>
    <div>
        <img src="http://nssdc.gsfc.nasa.gov/planetary/image/neptune_voy2.jpg" />
    </div>
</div>

CSS

html,body {
    margin:0;
    padding:0;
    width:100%;
    height:100%;
}

.container {
    width:100%;
}

.column {
    width:33.33333333%;
    float:left;
}

.column img {
    width:100%;
    height:auto;
}

演示

http://jsfiddle.net/andresilich/2p8uk/

单页演示

http://fiddle.jshell.net/andresilich/2p8uk/show/

CSS3演示

html,body {
    margin:0;
    padding:0;
    width:100%;
    height:100%;
}

.container {
    display:-moz-Box;
    display:-webkit-Box;
    display:Box;
    -moz-Box-orient:horizontal;
    -webkit-Box-orient:horizontal;
    Box-orient:horizontal;
    width:100%;
}

.column {
    -moz-Box-flex:1;
    -webkit-Box-flex:1;
    Box-flex:1;
    background-color:#ddd;
}

.column img {
    width:100%;
    height:auto;
}

演示

http://jsfiddle.net/andresilich/2p8uk/2/

单页演示

http://fiddle.jshell.net/andresilich/2p8uk/2/show/

更新:(safari,sorta,fix)
Safari不像其他浏览器那样将33.33%等同于100%,您可以使用我的CSS3演示,通过CSS自动进行大小调整,或者您可以将所有内容都放在具有101%宽度的容器中,并且只能隐藏额外的1%溢出:隐藏;关闭第三个图像。尝试这个:

<div>
    <div>
        <div>
            <img src="http://nssdc.gsfc.nasa.gov/planetary/image/neptune_voy2.jpg" />
        </div>
        <div>
            <img src="http://nssdc.gsfc.nasa.gov/planetary/image/neptune_voy2.jpg" />
        </div>
        <div>
            <img src="http://nssdc.gsfc.nasa.gov/planetary/image/neptune_voy2.jpg" />
        </div>
    </div>
</div>

html,body {
    margin:0;
    padding:0;
    width:100%;
    height:100%;
}

.container {
    width:100%;
}

.inner {
    width:101%;
    overflow:hidden;
}

.column {
    width:33.33333333%;
    float:left;
}

.column img {
    width:100%;
    height:auto;
}

演示:http://fiddle.jshell.net/andresilich/2p8uk/4/

今天关于如何创建3个操作数计算器如何创建3个操作数计算器的函数的分享就到这里,希望大家有所收获,若想了解更多关于android – 如何创建3个同样宽的TextView,它在屏幕上填充父级、c – SSE FP单元是否检测到0.0个操作数?、c – 操作符==的两个操作数的隐式转换、css – 创建3个完全相等的列,占据浏览器窗口宽度的100%等相关知识,可以在本站进行查询。

本文标签: