Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 19.08.2012
Сообщений: 8

Как избежать округления чисел в функции

03.01.2013, 14:04. Показов 1220. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо вводить последовательность действительных чисел. Из каждого числа этой последовательности необходимо "отбрасывает" последнюю цифру в целой части числа.
Проблема в том, что в функции число округляется. Помогите разобраться почему
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Option Explicit
Sub v1()
Dim a As Double, s As Integer, i As Integer
Sheets("Лист1").Select
Range("a1:c5").Clear
For i = 1 To 5
  a = Val(InputBox("Введите a(" + Trim(Str(i)) + ")"))
  s = funs(a)
  Cells(i, 1) = a
  Cells(i, 3) = s
Next i
End Sub
 
Function funs(ByVal a As Double) As Double
Dim s As Integer, stra As String, i As Integer
stra = Str(a) ' здесь переменная а уже округлена
s = 0
stra = Left(stra, Len(stra) - InStr(stra, "."))
For i = 1 To Len(stra)
  s = s + Val(Mid(stra, i, 1))
Next i
funs = a
End Function
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.01.2013, 14:04
Ответы с готовыми решениями:

Как избежать округления дробных чисел
не виводит дробь а только целие числа. где проблема ? #include <iostream.h> #include <math.h> int mat(double x,double...

Как избежать округления дробных чисел
как сделать что бы не округляло ??? float t; float z,m; using namespace std; void main(void) { m=-pow(5,2)/2;

Избежать округления шага в NumberAxis
Всем привет, столкнулся со следующей проблемой : Если установить у Number Axis поле tickUnit в целое число, то у шага сетки на графике...

5
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
03.01.2013, 14:33
Попробуйте вместо
Visual Basic
1
 a = Val(InputBox("Введите a(" + Trim(Str(i)) + ")"))
Так
Visual Basic
1
 a = Val(replace(InputBox("Введите a(" + Trim(Str(i)) + ")")),",",".")
1
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
03.01.2013, 14:58
Цитата Сообщение от lunozwetka Посмотреть сообщение
s As Integer
!!!
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub v1()
Dim a As Double, s , i As Integer
Sheets("Ëèñò1").Select
Range("a1:c5").Clear
For i = 1 To 5
  a = Val(Replace(InputBox("Ââåäèòå a(" + Trim(Str(i)) + ")"), ",", "."))
  s = funs(a)
  Cells(i, 1) = a
  Cells(i, 3) = s
Next i
End Sub
 
Function funs(ByVal a As Double) As String
Dim p%
funs = CStr(a)
p = InStr(1, funs, ",")
If p > 1 Then
funs = Left(funs, p - 2) & Mid(funs, p)
Else
funs = CStr(a \ 10)
End If
End Function
Добавлено через 10 минут
Цитата Сообщение от gaw Посмотреть сообщение
Dim a As Double, s , i As Integer
Visual Basic
1
Dim a As Double, s As Double, i As Integer
1
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
03.01.2013, 16:00
Вариант
Visual Basic
1
2
3
Function funs(a As Double) As Double
funs = a - Fix(a) + Fix(a / 10)
End Function
1
0 / 0 / 0
Регистрация: 19.08.2012
Сообщений: 8
04.01.2013, 12:51  [ТС]
Прошу ещё немного помочь
Вот результат работы программы
1 - 1236,36 --> 123,36
2 - 123456,69 --> 12345,69
3 - 1234569,37 --> 1 234 563 698
4 - 12397,363 --> 1 239 363
5 - 789 --> 78

1,2,5 отрабатываются правильно, а 2 и 3 вообще не не понимаю почему так отрабатывается.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Option Explicit
Sub v1()
Dim a As Double, s As String, i As Integer
Sheets("Лист1").Select
Range("a1:c20").Clear
For i = 1 To 5
  a = Val(InputBox("Введите a(" + Trim(Str(i)) + ")"))
  s = funs(a)
  Cells(i, 1) = a
  Cells(i, 3) = s
Next i
End Sub
 
Function funs(ByVal a As Double) As Double
Dim s As String, stra As String, stra2, i As Integer, count, TestString As String, subString As String, LeftString, RightString
stra = CStr(a)
count = InStr(stra, ",")
If count = 0 Then
    If Len(stra) < 2 Then
        TestString = 0
    Else
         count = (Len(stra) - 1)
         TestString = Left(stra, count)
    End If
Else
LeftString = Left(stra, (count))
RightString = Right(stra, (Len(stra) - count))
 If Len(LeftString) < 3 Then
        TestString = "0" + "," + RightString
    Else
        count = (Len(LeftString) - 2)
         LeftString = Left(LeftString, count)
          MsgBox (LeftString)
          subString = ","
         'TestString = LeftString + "," + RightString
         TestString = LeftString & subString & RightString
    End If
 
End If
 
funs = TestString
End Function
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
04.01.2013, 13:48
Цитата Сообщение от lunozwetka Посмотреть сообщение
s As String,
Цитата Сообщение от lunozwetka Посмотреть сообщение
s = funs(a)
Цитата Сообщение от lunozwetka Посмотреть сообщение
funs(ByVal a As Double) As Double
s As String===> s As Double или просто s
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.01.2013, 13:48
Помогаю со студенческими работами здесь

Как избежать округление чисел?
Всем доброго времени суток, столкнулся с такой проблемой, при передачи данных из datagridview1 в массив, а из массива в сhart1, то дробные...

Как избежать повторного выполнения функции
Подскажите, не могу найти. Есть функция: $(&quot;.street&quot;).click(function(event){ var id=$(this).attr(&quot;id&quot;); ...далее исправный...

Как избежать повторение чисел в строках массива?
Как избежать повторение чисел в строках массива? Private Sub Command1_Click() Dim m(10, 6) Print Randomize For A...

Как мне избежать взятия адреса у аргумента функции?
Здравствуйте, написал код, который на одном компиляторе работает как надо, а на другом выдает кривые ответы, порылся в интернете и понял,...

Как избежать копирования вектора, при возврате его из функции?
Вопрос простой. В классе есть поле вектор, член - данные. Методом я возвращаю его const std::vector&lt; unsigned char &gt;&amp;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru