SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian

Reply
 
Thread Tools Display Modes
Old 08/07/2018, 03:40 PM   #1
Josipo
Big Clucker
 
Join Date: Dec 2010
Posts: 98
Reputation: 0
Default Вопрос про float

Есть следующий код:

strval(inputtext) = 31499

format(string, sizeof(string), "%.2f$.", float(strval(inputtext)) / 100);
SendClientMessage(playerid, -1, string);

При выводе в чат вижу "314.98$".
Что за магия с округлением? Почему 99 становится 98?
Josipo is offline   Reply With Quote
Old 08/07/2018, 06:18 PM   #2
DrumYum
Big Clucker
 
Join Date: Oct 2011
Location: Russia
Posts: 183
Reputation: 2
Default Re: Вопрос про float

Насколько я понимаю, это особенности арифметики чисел с плавающей точкой
https://softwareengineering.stackexc...ounding-errors
__________________
Sorry for my bad English, I'm from Russia
DrumYum is offline   Reply With Quote
Old 09/07/2018, 06:51 AM   #3
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,467
Reputation: 131
Default Re: Вопрос про float

Ответ на вопрос выше правильно дали.
Однако, странный вы способ конвертирования используете, почему не использовать Floatstr?
Код бы выглядел элегантней:
Code:
format(string, sizeof(string), "%.2f$.", floatstr(inputtext) / 100);
SendClientMessage(playerid, -1, string);

Или как вариант вообще ничего не конвертировать и работать со строкой, взять два последних символа и всё до него...
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is online now   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Float:Angle2D(Float:PointA[], Float:PointB[]) warning but I don't get it why... Scrillex Scripting Help 6 26/03/2013 12:52 AM
Whats the easy way to get (Float:minx, Float:miny, Float:maxx, Float:maxy) for GangZoneCreate Issam Scripting Help 8 18/09/2011 06:16 PM
Move3DTextLabel(ID, string[], color, Float:NewX, Float:NewY, Float:NewZ) Eazy_Efolife Help Archive 5 28/06/2011 10:17 PM
OnPlayerClick(playerid, Float:x, Float:y, Float:z) [HELP] Medal Of Honor team Help Archive 7 28/03/2011 01:57 PM
GetArea(&Float:minx,&Float:miny,&Float:maxx,&Float:maxy) pagie1111 Help Archive 2 14/04/2010 10:39 AM


All times are GMT. The time now is 05:51 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.