Может кому пригодится (или может кто мне покажет более правильное/простое решение), вот функция для получения числа разделённого запятыми (когда то на батнике пробовал решить, получилось - но кривовато, а тут совсем другое дело
)...
Код:
$MyNumber = 212347525 ;> 212,347,525
MsgBox(64, "Внимание", "Конвертировали обычное число: " & @LF & @LF & _
$MyNumber & @LF & @LF & _
"В строку (числовую) разделённую запятыми: " & @LF & @LF & GetComasNumber($MyNumber))
Func GetComasNumber($iNumber)
$iNumber = Number($iNumber)
If $iNumber <= 1000 Then Return $iNumber
Local $iLength = StringLen($iNumber)
Local $RetStr = '', $iN
For $i = 1 To $iLength
$iN = StringMid($iNumber, $i, 1)
If IsInt(($iLength - $i) / 3) And ($iLength - $i) / 3 > 0 Then
$RetStr &= $iN & ','
Else
$RetStr &= $iN
EndIf
Next
Return $RetStr
EndFunc
amel27,
А жаль
- Я как раз написал собственный редактор реестра, он правда медленно работает, но полагаю что даже если у кого то и хватит терпения дождаться окончания считывания всех строчек с реестра (у меня не хватает
), то он увидит не полный список, или скрипт выпадет с ошибкой о рекурсивном вызове подфункции.
Цитата:
можно сделать короче (одной строчкой)
|
О, как это одной строчкой сделать? (скорость не критична в моём случае, проверяться будет вне цикла).
Цитата:
только если $Nmber есть степень двойки, т.е. в двоичном виде есть последовательность "единичек"
|
У меня число (в этом конкретном случае), всегда 15, т.е нужно проверить, если исло болльше чем 15, то вернуть 15, если меньше, то вернуть то которое меньше (это подходит под критерии сказанного?
я просто в математике совсем не силён)... понимаю что решать подобные задачи для конкретного случая нет особого смысла, но мне больше для расширения своего круга знании, вот такие мелочи иногда помагают решить серъёзную проблему.