BG Development


Страници: (4) [1] 2 3 ... последна »  ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Число с плаваща запетая към стринг
korsarq
Публикувано на: 21-11-2019, 10:37
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 333
Регистриран на: 30.11.16



Трябва да конвертирам число със плаваща запетая към стринг, но нямам достъп до стандартните функции за работа с такива числа, трябва да си напиша моя функция.

Идеята ми е да разделя числото на две цели части: преди и след запетаята и да ги сложа като цели числа в стринг.

Пример: 12.34 -> 12 и 34

За сега съм направил това:
CODE

unsigned int ftos(float number, unsigned char* buff, unsigned short buffSize)
{
   unsigned int iPart = (unsigned int)number;
   float dPart = number - iPart;
   float result = dPart;
      
   while(result)
   {
       dPart *= 10;
       result = dPart - (unsigned int)dPart;
   }
   
   unsigned int dPartFinal = (unsigned int)dPart;
      
      //todo: assemble both ints as a string
}


Лявата част я взима правилно, но дясната не точно.
При 12.34, лявата част се получава 12, а дясната 34000016(искам да е само 34).
Досега не съм работил с числа с плаваща запетая и ще съм много благодарен ако някой ми помогне.
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 21-11-2019, 11:37
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3046
Регистриран на: 21.02.18



state of the art: https://github.com/dtolnay/dtoa

в readme-то има и линк към ц++ версия

Това мнение е било редактирано от Gamma Goblin на 21-11-2019, 11:38


--------------------
https://www.rust-lang.org/
---
" Не може да си на висок пост без да си подкупен. Ще те махнат." - SuN Трола
PMEmail PosterUsers Website
Top
korsarq
Публикувано на: 21-11-2019, 12:21
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 333
Регистриран на: 30.11.16



Трябва ми за Ц
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 21-11-2019, 13:01
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3046
Регистриран на: 21.02.18



то е същото


--------------------
https://www.rust-lang.org/
---
" Не може да си на висок пост без да си подкупен. Ще те махнат." - SuN Трола
PMEmail PosterUsers Website
Top
korsarq
Публикувано на: 21-11-2019, 13:24
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 333
Регистриран на: 30.11.16



Не мога просто да го взема и да го ползвам.Има класове и т.н.Не ми се занимава да го преработвам.
PMEmail Poster
Top
Дон Реба
Публикувано на: 21-11-2019, 13:43
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 8546
Регистриран на: 11.11.06



не подозираш в какви дълбоки води се гмуркаш
значи, най-близкото до това което се опитваш да направиш е да ограничиш числата до 7 - толкова е резолюцията на флоат формата. попълваш 7 числа, имам предвид всичко, не само тия след точката. после чистиш задната част по следния начин - ако е нули просто я махаш. ако е девятки, махаш ги като прибавяш едно към последното число и разбира се прехвърляш преноса който евентуално ще се породи. всичко това ще вдигне размера на кода към 3-4 пъти спрямо лекия вариант който имаш сега

PM
Top
Антон Яначков
Публикувано на: 21-11-2019, 18:13
Quote Post



Име: Антон Яначков
Група: Потребител
Ранг: Почетен член

Мнения: 1367
Регистриран на: 27.07.16



Защо толкова сложно? Този език няма ли проста функция да прехвърли числото директно в стринг. Получиш ли стринг 12.34 с още един ред риплейсваш точката с шпация и шпация и си готов. Всичко това трябва да бъде само два реда. Ако не е два реда значи езика е калпав, но се съмнявам да е чак толкова калпав.

Това мнение е било редактирано от Антон Яначков на 21-11-2019, 18:15
PMEmail PosterUsers Website
Top
SuN
Публикувано на: 21-11-2019, 19:02
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 9642
Регистриран на: 27.01.05



Като изключи съветите досега, които вероятно ще пробваш, нещо такова гледал ли си: "https://dl.acm.org/citation.cfm?doid=93542.93559"? Не съм се занимавал с това за да давам съвети, но уж имало някакви готови алгоритми.


--------------------
Само аз не троля.
Всички коментари са плод на художествена измислица и нямат общо с действителни и недействителни лица, събития и факти.
PMEmail Poster
Top
Дон Реба
Публикувано на: 21-11-2019, 20:25
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 8546
Регистриран на: 11.11.06



QUOTE (Антон Яначков @ 21-11-2019, 18:13)
Защо толкова сложно? Този език няма ли проста функция да прехвърли числото директно в стринг.

има, но една от причините С да смаже разните там паскали и бейсици, е че стандартните функции като синус, корен, логаритъм и тн, не са пряко заложени в езика, а се наричат "стандартна библиотека" . това позволява да бъдат изключени ако се налага, когато например пишеш за микроконтролери и всеки байт ти е ценен. явно случая е някакъв подобен, и ако беше чел внимателно, още първото изречение го казва
PM
Top
relax4o
Публикувано на: 21-11-2019, 20:43
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2485
Регистриран на: 04.04.07



QUOTE (Дон Реба @ 21-11-2019, 20:25)
QUOTE (Антон Яначков @ 21-11-2019, 18:13)
Защо толкова сложно? Този език няма ли проста функция да прехвърли числото директно в стринг.

има, но една от причините С да смаже разните там паскали и бейсици, е че стандартните функции като синус, корен, логаритъм и тн, не са пряко заложени в езика, а се наричат "стандартна библиотека" . това позволява да бъдат изключени ако се налага, когато например пишеш за микроконтролери и всеки байт ти е ценен. явно случая е някакъв подобен, и ако беше чел внимателно, още първото изречение го казва

Не може ли да се види как е имплементирано в стандартната библиотека и да се вземе само тази част?



--------------------
Бисери :D

QUOTE (oveRLuckEd)
Ползваш някоя нова версия на PHP, която е вече ооп ориентирана и заради това ти я изкарва тази грешка.


QUOTE (nbacool2)
Щом няма input полета, значи няма откъде да се направи SQL инжекция Very Happy
PM
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (4) [1] 2 3 ... последна » Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0