PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Представление чисел с плавающей точкой


Представление чисел с плавающей точкой

Сообщений 1 страница 6 из 6

1

Есть такая примитивная программка:

Код:
OpenConsole("Вычисление факториала N!")
PrintN("Вычисление факториала N!")
PrintN("Задайте значение N")
F.d=1.000000
fact.s=Input()
N.i=Val(fact)
PrintN(FormatDate("%hh:%ii:%ss", Date()))
For i=2 To N
  F=F*i
Next i
PrintN(FormatDate("%hh:%ii:%ss", Date()))
PrintN("N!= "+FormatNumber(F,0,","," ")) 
PrintN("Для завершения нажмите Enter")
Input()
CloseConsole()

Программа даёт следующий результат:
http://forumupload.ru/uploads/0009/ae/28/593/t450802.png
Внимание, вопрос:
1. Существует ли способ представить результат в виде 9.33262154439441Е+157?
2. Как мне добиться отображения времени, ушедшего на расчёты, отличного от нуля?

0

2

matocob написал(а):

1. Существует ли способ представить результат в виде 9.33262154439441Е+157?

Тип исполняемого файла должен быть Console.

Код:
ImportC ""
  wprintf(Format.s, Param.d)
EndImport

OpenConsole("Вычисление факториала N!")
PrintN("Вычисление факториала N!")
PrintN("Задайте значение N")
F.d=1.000000
fact.s=Input()
N.i=Val(fact)
Time = ElapsedMilliseconds()
For i=2 To N
  F=F*i
Next i
PrintN("Расчет выполнен за "+Str(ElapsedMilliseconds()-Time)+" мс")
wprintf(~"%E\n", F)
PrintN("Для завершения нажмите Enter")
Input()
CloseConsole()
matocob написал(а):

2. Как мне добиться отображения времени, ушедшего на расчёты, отличного от нуля?

Этот расчет занимает меньше миллисекунды.

0

3

Пётр написал(а):

Тип исполняемого файла должен быть Console.

Не понял, к чему это относится.

Пётр написал(а):

ImportC ""
  wprintf(Format.s, Param.d)
EndImport

Импорт библиотечных функций предполагает, что эти библиотеки есть. Мне откуда их брать? Я считал, что бейсик самодостаточен, оказалось - нет. Попробую связаться с разработчиком.

Отредактировано matocob (12.11.2020 12:06:22)

0

4

matocob написал(а):

к чему это относится.

К Компилятор -> Настройки компилятора.

http://a.radikal.ru/a14/2011/22/b56cd034f3fd.png

matocob написал(а):

Импорт библиотечных функций предполагает, что эти библиотеки есть. Мне откуда их брать?

Библиотека есть в дистрибутиве. Она по умолчанию задействована при компиляции поэтому не указана в импорте.

0

5

Что касается костылей, то проще вычислить десятичный логарифм, целая часть которого и будет экспонентой, а дальше сформировать строку в операторе PrintN
Например,
E.i=Int(Log10(F))
F=F/Pow(10,E)
PrintN(StrD(F,10)+"E"+E)

Отредактировано matocob (12.11.2020 12:43:38)

0

6

Пётр написал(а):

Библиотека есть в дистрибутиве. Она по умолчанию задействована при компиляции поэтому не указана в импорте.

Спасибо, буду знать

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Представление чисел с плавающей точкой