Ошибка конкатенации VB.NET - PullRequest
0 голосов
/ 21 июня 2010

У меня есть эта строка кода, которую я хочу объединить - или, по крайней мере, решить проблему цикла ...

test = 1 - ("0." & thisnumber(0) & thisnumber(1) & thisnumber(2))

Я хочу, чтобы в ней был цикл ...

- Увеличение этого числа ()

Пока оно не достигнет примерно 500,

Может ли кто-то реализовать цикл в этом?

Или предложить способ ...

Большое спасибо ..

Джеймс:)

РЕДАКТИРОВАТЬ:

Так что, если бы у меня были значения thisnumber (0) = 1, thisnumber (1) = 5,thisnumber (2) = 0, thisnumber (3) = 7 ... Это будет делать 1 - 0,1507 ... (Но я хочу цикл, поэтому он делает все 500 без того, чтобы я их все печатал) - Я хочу 1 000 000, такэто было бы огромной проблемой.

Ответы [ 4 ]

1 голос
/ 21 июня 2010

Конкатенация строк здесь очень запутанная. Я думаю, что вы на самом деле пытаетесь сделать арифметику, да? Вам нужен цикл, в котором вы увеличиваете как целое число, которое вы передаете в thisnumber(), так и степень десяти, на которую делите. Итак, у вас есть 1 - thisnumber(0)/10 - thisnumber(1)/100 / thisnumber(2)/1000 и так далее. Вы должны быть в состоянии сделать это с помощью цикла, как только перестанете думать о построении строки.

Обновление: какой тип вы планируете использовать для test? Вы понимаете, сколько десятичных знаков точности он может содержать, если это число? Если это строка, что вы собираетесь с ней делать, когда она у вас есть?

0 голосов
/ 21 июня 2010

Что-то вроде этого, может быть ... (Извините, мой синтаксис VB, это было давно)

dim num as double = 0.0

for i as integer = 0 to 500
    num += thisnumber(i) / (10 ^ (i + 1))
next 

test = 1 - num

Однако ... пока вы не наберете 500 цифр, эта информация будет переполнена, и я все еще должен задаться вопросом, почему ваш ввод в этом формате в первую очередь ...

РЕДАКТИРОВАТЬ: на основе комментариев ОП, вот версия минус переполнение ...

dim num as double = 0.0
dim factor as double = 1.0;

for i as integer = 0 to 500
    factor /= 10
    num += thisnumber(i) * factor
next 

test = 1 - num

Эта версия не будет переполнена, но в процессе вы столкнетесь с проблемами десятичной точности. Если, как предполагает ОП, речь идет о поиске Пи с высокой точностью, возможно, есть более эффективные способы, но, не зная реальной проблемы, я не уверен, что стоит вдаваться в детали.

0 голосов
/ 21 июня 2010
Dim d As Integer
Dim val As String
val = "0."
For d = 0 To 500
    val = val & d
Next d
test = 1 - Convert.ToDouble(val)
0 голосов
/ 21 июня 2010

Используйте DO ... WHILE петлю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...