Как использовать математические функции потолка , пола | VB.NET
Еще раз здравствуйте, мне нужно использовать эти математические функции в моей задаче.
Прежде всего, у меня есть список значений, которые сначала я использую математические функции abs и log10.
Теперь мне нужно использовать эти 2 уравнения в этом массиве.
1. x=ceil(30*log10 (arrData))+1
2. y=floor (30*log10(arrData))
И тогда мне нужно сделать такой расчет : newsetdata=y-x+1
Я создаю 2 списка, 1-й-это arrData, который я использовал в потолке, а arrData2-это пол.
теперь я хочу создать новый список, в котором я могу использовать это уравнение - > arrData2-arrData+1, и я не могу этого сделать...какая-то помощь?
Что я уже пробовал:
Dim strFileName = IO.File.ReadAllLines("C:\Users\x-ios\Desktop\1234.txt") Dim cu As Globalization.CultureInfo = Globalization.CultureInfo.CreateSpecificCulture("en-US") Dim style As Globalization.NumberStyles = Globalization.NumberStyles.Number Or Globalization.NumberStyles.AllowCurrencySymbol Dim arrData = strFileName _ .Select(Function(x) New With _ { .FirstCol = Math.Ceiling(Math.log10(Math.Abs(Double.Parse(x.Split(New String(){Microsoft.VisualBasic.vbTab}, StringSplitOptions.RemoveEmptyEntries)(0), style, cu))), _ .SecondCol = Math.Ceiling(Math.log10(Math.Abs(Double.Parse(x.Split(New String(){Microsoft.VisualBasic.vbTab}, StringSplitOptions.RemoveEmptyEntries)(1), style, cu)))) _ }) _ .ToList() Dim arrData2 = strFileName _ .Select(Function(x) New With _ { .FirstCol = Math.Floor(Math.log10(Math.Abs(Double.Parse(x.Split(New String(){Microsoft.VisualBasic.vbTab}, StringSplitOptions.RemoveEmptyEntries)(0), style, cu)))), _ .SecondCol = Math.Floor(Math.log10(Math.Abs(Double.Parse(x.Split(New String(){Microsoft.VisualBasic.vbTab}, StringSplitOptions.RemoveEmptyEntries)(1), style, cu)))) _ }) _ .ToList()
OriginalGriff
И что же?
В чем проблема?
Где ты застрял?
Какая помощь вам нужна?
Вы просмотрели официальную документацию, и если да, то почему это вам не помогло?
x-ios
Да, вы правы. Я уточняю вопрос...
Maciej Los
arrData2-arrData+1
???
arrData - это набор данных: FirstCol и SecondCol. Какой именно расчет вам нужен?
x-ios
Да, anewsetdata=arrData2-arrData+1.
Как я могу это сделать?
Maciej Los
Прости, но ты что, слепой? arrData-это набор данных. Пожалуйста, прочтите мой предыдущий комментарий.
x-ios
Я хочу: (sub The FirstCol of arrData2 from FirstCol of arrData) +1 (sub The SecondCol of arrData2 from SecondCol of arrData)+1 и сохранить их в новом наборе данных. Я выполнил только 1D, а не 2D.
Maciej Los
Что sub()
значит? вычитание?x = sub(Floor(FirstCol) ? Ceiling(FirstCol))+1
y = sub(Floor(SecondCol) ? Ceiling(SecondCol))+1
но вы упомянули:x=ceil(30*log10(arrData))+1
y=floor(30*log10(arrData))
Что такое правильный расчет? Пожалуйста, предоставьте полное уравнение!
x-ios
Да, я упомянул, что Х=Сэл(30*log10 коп(arrData))+1 , г=пол(30*log10 коп(arrData)), и я выполнил их (arrData является X ,а y-arrData2) . А теперь мне нужно: newdataset=y-x+1
(Я обновляю вопрос, потому что забыл упомянуть его по ошибке)
x-ios
Теперь, как добавить каждый результат из этого уравнения (y-x-1) в новый набор данных? Но в том же измерении, что и arrData? Это означает, что в новом наборе данных 22x2.
Maciej Los
Если вы хотите создать 2-мерный массив, я бы посоветовал прочитать это: Как инициализировать многомерный массив Это тоже может быть полезно: VB.Net -Массивы.
Dim destArray(,) As Integer = New Integer(arrData.Length, 2);
Dim i As Integer = 0
For i = 0 To arrData.Length-1
Dim x = Math.Ceiling(30*Math.Log10(d.a))+1
Dim y = Math.Floor(30*Math.Log10(d.b))
destArray(i,0) = x
destArray(i,1) = y
Next
x-ios
Здравствуйте, спасибо за ответ. Это не работает, у меня была ошибка: потому что длина не является членом list(). http://tinypic.com/r/242zdqw/9
И у меня есть проблема.Все мои выходные числа не 0,07, а 7. И знаете почему ?