VB.net 计算比率

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB.net 计算比率相关的知识,希望对你有一定的参考价值。

按百分比计算,本来有10个人各占10%,这是突然插入一个人,假设这个人占有2%,怎么从这10个人中抽点百分比给这个人?

参考技术A 你既然固定了新加入的占2%,那么原来的10个人又是均等的,当然剩下的98%每个人有9.8%。 参考技术B 你的程序太繁琐,试试下面的。

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress, TextBox2.KeyPress, TextBox3.KeyPress
If (e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = "." Or Asc(e.KeyChar) = Keys.Back Then
e.Handled = False
Else
e.Handled = True
End If
End Sub

Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp, TextBox2.KeyUp, TextBox3.KeyUp
Dim myTextBox As TextBox = CType(sender, TextBox)
If myTextBox Is Nothing Then Exit Sub

If myTextBox.Name = TextBox1.Name Then
TextBox2.Text = Val(TextBox1.Text) / 100
TextBox3.Text = Val(TextBox1.Text) / 144
ElseIf myTextBox.Name = TextBox2.Name Then
TextBox1.Text = Val(TextBox2.Text) * 100
TextBox3.Text = Val(TextBox1.Text) / 144
ElseIf myTextBox.Name = TextBox3.Name Then
TextBox1.Text = Val(TextBox3.Text) * 144
TextBox2.Text = Val(TextBox1.Text) / 100
End If
End Sub
这样可以么?追问

text1,text2,text3分别是什么

参考技术C 每个人都减0.02/10=0.2%。其实我不太明白你是啥意思追问

10个人各占10%这时额外插入了另一个人,假设这个人是占有2%的,则原来10个人需要各自减去一定的%给这个人

追答

2/102约=1.96%
这和vb.net有什么关系吗

追问

不行,我要的是这十个人取出来的数总共等于2%,而不是一个人直接取出2%,这才是难点
我编了个程序需要

追答

除以10不就行了吗,能否告诉我你做的程序是干啥的

追问

做游戏用的,算某某单位的占有率

追答

我算是看不明白你说的啥了,你又想说明白点私聊吧

本回答被提问者采纳

如何在 Visual Studio vb.net 代码中计算平均值? (矩阵)

【中文标题】如何在 Visual Studio vb.net 代码中计算平均值? (矩阵)【英文标题】:How to calculate average in visual studio vb.net code ? (matrix) 【发布时间】:2022-01-17 23:23:41 【问题描述】:

我需要计算 vb.net

中矩阵元素的平均值

这是我的矩阵

5 2 1 2
5 5 2 -2
1 5 -1 1
1 -1 -5 -2

【问题讨论】:

矩阵是如何定义的? 要计算列和行的平均值吗? 【参考方案1】:

其中一个可能是你的“矩阵”

' multidimensional array
Dim m1(,) As Integer =
    
        5, 2, 1, 2,
        5, 5, 2, -2,
        1, 5, -1, 1,
        1, -1, -5, -2
    
' jagged array
Dim m2()() As Integer =
    
        New Integer() 5, 2, 1, 2,
        New Integer() 5, 5, 2, -2,
        New Integer() 1, 5, -1, 1,
        New Integer() 1, -1, -5, -2
    
' list of lists
Dim m3 = New List(Of List(Of Integer)) From
    
        New List(Of Integer)() From 5, 2, 1, 2,
        New List(Of Integer)() From 5, 5, 2, -2,
        New List(Of Integer)() From 1, 5, -1, 1,
        New List(Of Integer)() From 1, -1, -5, -2
    

对于这些矩阵中的每一个,这里是计算平均值的方法

Dim a1 As Double
For i = m1.GetLowerBound(0) To m1.GetUpperBound(0)
    For j = m1.GetLowerBound(1) To m1.GetUpperBound(1)
        a1 += m1(i, j)
    Next
Next
a1 /= (m1.GetUpperBound(0) - m1.GetLowerBound(0) + 1) * (m1.GetUpperBound(1) - m1.GetLowerBound(1) + 1)

Dim a2 As Double
' count items because jagged array can have different # of items in each level
Dim c2 As Integer 
For i = m2.GetLowerBound(0) To m2.GetUpperBound(0)
    For j = m2(i).GetLowerBound(0) To m2(i).GetUpperBound(0)
        a2 += m2(i)(j)
        c2 += 1
    Next
Next
a2 /= c2

Dim a3 = m3.SelectMany(Function(l) l).Average()

Console.WriteLine($"Multidimensional avg: a1")
Console.WriteLine($"Jagged avg: a2")
Console.WriteLine($"List of List avg: a3")

多维平均:1.1875 锯齿状平均:1.1875 列表平均:1.1875

【讨论】:

以上是关于VB.net 计算比率的主要内容,如果未能解决你的问题,请参考以下文章

从两个日期计算年龄 vb.net

套接字多连接 VB.NET

vb.net 应用程序不能在其他计算机上运行?

需要计算gridview.after databind VB.NET的高度

在文本框 VB.Net 中格式化和计算数字

从 vb.net 中的访问中计算特定记录