Convert string to double problem _tstof

Convert string to double problem _tstof

Anonymous
Not applicable
2,018 Views
16 Replies
Message 1 of 17

Convert string to double problem _tstof

Anonymous
Not applicable

Hi Friend,

 

I am convert string to double problem,

 

CString strValue=_T("2.4");

double dValue = _tstof(strValue);

 

Output is

Current Output

dValue result is 2.39999999

Expected Output

but I want dValue result is 2.4

 

With Regards,

Vijay

 

0 Likes
Accepted solutions (1)
2,019 Views
16 Replies
Replies (16)
Message 2 of 17

Alexander.Rivilis
Mentor
Mentor

Please read about floating (double) value precision: https://en.wikipedia.org/wiki/Double-precision_floating-point_format

It is OK if instead 2.4 you see 2.399999999999... because maximum precision of double value is 16 digit.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes
Message 3 of 17

Anonymous
Not applicable
Hi, Ok but I want dValue result is 2.4 Which data format is used... CString strValue=_T("2.4"); double dValue = _tstof(strValue); Result is 2.399999 Expect is 2.4 Regards, Vijay
0 Likes
Message 4 of 17

Alexander.Rivilis
Mentor
Mentor

@Anonymous wrote:
Hi, Ok but I want dValue result is 2.4 Which data format is used... CString strValue=_T("2.4"); double dValue = _tstof(strValue); Result is 2.399999 Expect is 2.4 Regards, Vijay

It is look like you did not understood me or did not read about precision of double value and how double value stored in memory. Not all double value can be stored in memory (or register) exactly as you write as string. 

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes
Message 5 of 17

Anonymous
Not applicable

Hi,

 

Understood that ...

 

Which data format is used for replace this source.

 

With Regards,

Vijay

0 Likes
Message 6 of 17

Alexander.Rivilis
Mentor
Mentor

Sorry but I did not understood what you want. Perhaps someone else will understand you and can help you. Is this question has any relation to ObjectARX?

 

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes
Message 7 of 17

Alexander.Rivilis
Mentor
Mentor
  // - ArxProject4.TestDouble command (do not rename)
  static void ArxProject4TestDouble(void)
  {
    CString strValue=_T("2.4");
    double dValue = _tstof(strValue);
    CString strNewValue; strNewValue.Format(_T("%g"), dValue);
    acutPrintf(_T("\nstrNewValue=%s"), LPCTSTR(strNewValue));
  }

 

Command: TESTDOUBLE

strNewValue=2.4

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes
Message 8 of 17

Anonymous
Not applicable

Output is

Current Output

dValue result is 2.39999999

Expected Output

but I want dValue result is 2.4

 

Here dValue is double datatype

I want result in double

Expected :

dValue is 2.4

Value are store in double data type not string format.

Other then string which datatype is used?

0 Likes
Message 9 of 17

Anonymous
Not applicable

// - ArxProject4.TestDouble command (do not rename)
static void ArxProject4TestDouble(void)
{
CString strValue=_T("2.4");
double dValue = _tstof(strValue);
acutPrintf(_T("\ndValue =%f"), dValue );
}

 

Current Output

dValue = 2.399999..

 

Expect Output is

But I want 2.4

 

double dValue = _tstof(strValue); \\ Replace is _tstof, to get expect result?

0 Likes
Message 10 of 17

Alexander.Rivilis
Mentor
Mentor
Accepted solution

http://www.binaryconvert.com/convert_double.html

 

 

2016-08-30_12-34-09.png

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes
Message 11 of 17

Alexander.Rivilis
Mentor
Mentor

@Anonymous wrote:

Expect Output is

But I want 2.4

 

double dValue = _tstof(strValue); \\ Replace is _tstof, to get expect result?


You'll never get the "expected result", since double value can never be exactly the same as 2.4000000000000000000000000

Nearest value, which can be in double format  is 2.39999999999999991118215802999E0

 

 

 

I clearly explained ???

 

 

2016-08-30_12-50-18.png

 

 

2016-08-30_12-49-52.png

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes
Message 12 of 17

Anonymous
Not applicable

Ok

 

CString strValue=_T("2.4");

i want to read the strValue value is 2.4.
2.4 value is store into any datatype for multiplication process.[Using _tstof this is problem]
which convert is possible?

 

 

current output:

Example:

double dValue = 2.399999999 * 2;
dValue = 4.8;

 

Want output

Example:

double dValue = 2.4 * 2;

dValue = 4.8;

0 Likes
Message 13 of 17

Alexander.Rivilis
Mentor
Mentor

It is look like I can not help you. Sorry.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes
Message 14 of 17

Anonymous
Not applicable

Yes Correct!

 

I want 2.4

 

not 2.3999999

 

replies _tstof() ==> this function 

0 Likes
Message 15 of 17

Alexander.Rivilis
Mentor
Mentor

@Anonymous wrote:

 

I want 2.4

 

not 2.3999999

 

replies _tstof() ==> this function 


There is no function which can you use instead of _tstof() because double value can not have exact value 2.4

Every function which convert string "2.4" to double will be return value 2.39999999999999991118215802999E0 as more possible nearest to 2.4

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 16 of 17

tbrammer
Advisor
Advisor

I salute you for your patience, Alexander.

 

double.png

 

@sn.vijayan: You can't always get what you want.

You can't put a horse into a matchbox.

You can't put 2.4 into a double.

Accept it as it is.

 

 


Thomas Brammer ● Software Developer ● imos AGLinkedIn
If an answer solves your problem please [ACCEPT SOLUTION]. Otherwise explain why not.

Message 17 of 17

Alexander.Rivilis
Mentor
Mentor

@tbrammer wrote:

I salute you for your patience, Alexander.


Smiley Happy I was always told that I have an iron patience. I am glad that you appreciated it.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes