С Новым годом! Форум программистов, компьютерный форум, киберфорум
F# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2

Нужна строка формата, которая передается аргументом в sprintf

16.09.2014, 21:57. Показов 1480. Ответов 5

Студворк — интернет-сервис помощи студентам
Итак, есть число (x : double)
Code
1
let x = myGetDoubleFunc()
Нужна строка формата, которая передается аргументом в sprintf.
т.е. на выходе должно быть
Code
1
let xString = sprintf "[строка формата]" x
xString должна выглядеть так:
[знак(+/-)]i[целая часть][дробная часть(если есть), но не больше 3-х разрядов]
Никак не придумаю, как бы мне все это организовать покрасивее. Страницами: msdn и fsharpforfunandprofit наелся досыта. Если объяснил непонятно (у меня, к сожалению, часто такое бывает) - спрашивайте. Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.09.2014, 21:57
Ответы с готовыми решениями:

Создать функцию, которой строка передаётся как параметр, и которая возвращает количество слов
создать функцию в которой строка передаётся как параметр и возвращает колличество слов в этой строке

Создать функцию, которой строка передаётся как параметр, и которая возвращает количество слов
создать функцию в которой строка передаётся как аргумент и возвращает количество слов

Нужна компонента, которая переводит файл из формата Word, Excel в HTML-формат
Ребята, очень нужен причиндал : компонента, которая переводит файл из формата Word, Excel в HTML-формат...

5
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
17.09.2014, 10:48
честно говоря я ничего не понял. может более цельным куском кода покажете?

Добавлено через 33 секунды
надо double отформатировать?

Добавлено через 37 минут
такое ?
Code
1
2
let sprintfi x = sprintf "%si%.3f" (if x < 0.0 then "-" else "+") (abs x)
sprintfi (-100.0/3.0) // -i33.333
1
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
17.09.2014, 22:23  [ТС]
pycture,
Цитата Сообщение от pycture Посмотреть сообщение
честно говоря я ничего не понял.
Ну типа комплексные числа и все такое...
Цитата Сообщение от pycture Посмотреть сообщение
такое ?
да. только я не понял, почему вы для + и - использовали string, а не char. И вместо +i3.000 должно быть +i3

Добавлено через 5 минут
И все же, я надеялся, что выйдет с использованием одного параметра
Code
1
let sprintfi x = sprintf "черная магия" x
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
17.09.2014, 22:41
Цитата Сообщение от rattrapper Посмотреть сообщение
почему вы для + и - использовали string, а не char.
string более универсален. если захочется не печатать + то будет так
Code
1
let sprintfi x = sprintf "%si%.3f" (if x < 0.0 then "-" else "") (abs x)
char тут не сработает
И вместо +i3.000 должно быть +i3
можно так попробывать
Code
1
2
3
4
5
6
7
    let sprintfi x = 
        let sign, x = (if x < 0.0 then "-" else "+"), (abs x)
        let text = sprintf "%si%g" sign x
        match text.IndexOf('.') with
        | -1 -> text
        | n when text.Length - n > 3 -> sprintf "%si%.3f" sign x
        | _  -> text
я надеялся, что выйдет с использованием одного параметра
на все случае черной магии не напасешься, но можно завести свой тип
и переопределить в нем ToString(). тогда sprintf "%O" будет печатать с нужным форматом
1
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
18.09.2014, 00:00  [ТС]
pycture, пока что я остановился на таком варианте:
Code
1
2
3
4
let sprintfi x = 
    let sign, x = (if x < 0.0 then "-" else "+"), (abs x)
    let format = Printf.StringFormat<string->double->_>("%si" + if x*1e3%1. = 0. then "%g" else "%.3f")
    sprintf format sign x
не понравился только вывод с экспонентой, например такого числа 2353465895734.55
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
18.09.2014, 07:34
[deleted] не то....

Добавлено через 13 минут
тогда так
VB.NET
1
2
3
4
5
let sprintfi x = 
    let sign, x = (if x < 0.0 then "-" else "+"), (abs x)
    match sprintf "%si%A" sign (bigint x), x % 1.0 with
    | intpart, 0.0  -> intpart
    | intpart, rest -> intpart + (sprintf "%.3g" rest).[1..]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.09.2014, 07:34
Помогаю со студенческими работами здесь

Нужна компонента, которая переводит файл из формата Word, Excel в HTML-формат
Нужна компонента, которая переводит файл из формата Word, Excel в HTML-формат... На сервер загружается файл в формате word, excel. Его...

Напишите программу со статическим методом, которому аргументом передается целочисленный массив и целое число
Напишите программу со статическим методом, которому аргументом передается целочисленный массив и целое число. Результатом метод возвращает...

Редактируется не та строка, которая нужна
Здравствуйте. Подскажите, пожалуйста, как подправить код. При удалении и редактировании выбираю, например 3 строку, а удаляется или...

Функция,которая определяет, встречается ли заданная буква, которая передается в функцию как параметр
Написать функцию, которая определяет, встречается ли заданная буква, которая передается в функцию как параметр, во введенной строке....

Написать функцию, аргументом которой является строка символов
Даны строки символов a, b. Определить max(f(а),5)*max(f(b),10), где f(s) – количество пробелов в строке. Помогите пожалуйста


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru