🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.pl.comp.lang.csharp
7 messages
7 total messages Started by Zeus Sun, 30 May 2010 20:30
Co zamiast?
#21523
Author: Zeus
Date: Sun, 30 May 2010 20:30
5 lines
854 bytes
(C++ modf()) szukałem, Google nic nie znalazły. Nie ma w C# - trzeba 
napisać samemu czy tu to się inaczej nazywa ewentualnie czym to obejść.

Pozdrawiam
S.Z.
Re: Co zamiast?
#21524
Author: Zeus
Date: Mon, 31 May 2010 05:14
12 lines
1088 bytes
Napisać samemu to nie problem

double modf(double base, double &intbase)
{
	intbase = (double)((int) base);
	return abs(base - intbase);
}
Jednak to jest wolniejsze od oryginału w C++ a jak to tu wygląda.
A może trzeba na to tutaj spojrzeć jeszcze inaczej? Proszę o radę.

Pozdrawiam
S.Z.
Re: Co zamiast?
#21525
Author: JK
Date: Mon, 31 May 2010 14:32
10 lines
1173 bytes
W dniu 2010-05-30 22:30, Zeus pisze:
> (C++ modf()) szukałem, Google nic nie znalazły. Nie ma w C# - trzeba
> napisać samemu czy tu to się inaczej nazywa ewentualnie czym to obejść.
>
> Pozdrawiam
> S.Z.
Ja znalałem cos takiego
http://bytes.com/topic/c-sharp/answers/269044-c-modf-function
Pozdraiam
JK
Re: Co zamiast?
#21526
Author: Zeus
Date: Mon, 31 May 2010 19:42
31 lines
1730 bytes
> Ja znalałem cos takiego
> http://bytes.com/topic/c-sharp/answers/269044-c-modf-function
> Pozdraiam
> JK
"/
double orig, ipart, fractional = 0;
orig = 1.234;

fractional = orig - (ipart = Math.Floor(orig));
/"
Tylko trzeba sprawdzać czy + lub - bo:

     	 Value          Ceiling          Floor
'          7.03                8              7
'          7.64                8              7
'          0.12                1              0
'         -0.12                0             -1
'          -7.1               -7             -8
'          -7.6               -7             -8

Więc wygląda na to, że moja funkcja jednak będzie szybsza tylko trzeba 
ją zaadoptować do C#.

Jeszcze jedno pytanie jak C# realizowane jest:
(C++)fun( & tocochcęotrzymać ) ?

Przepraszam za mędzenie ale jeszcze zbyt wielu rzeczy nie rozumiem.
Im dalej w las tym więcej drzew...

Pozdrawiam
S.Z.
Re: Co zamiast?
#21527
Author: Janusz Kielesiński
Date: Mon, 31 May 2010 20:13
44 lines
2169 bytes
W dniu 2010-05-31 21:42, Zeus pisze:
>> Ja znalałem cos takiego
>> http://bytes.com/topic/c-sharp/answers/269044-c-modf-function
>> Pozdraiam
>> JK
> "/
> double orig, ipart, fractional = 0;
> orig = 1.234;
>
> fractional = orig - (ipart = Math.Floor(orig));
> /"
> Tylko trzeba sprawdzać czy + lub - bo:
>
> Value Ceiling Floor
> ' 7.03 8 7
> ' 7.64 8 7
> ' 0.12 1 0
> ' -0.12 0 -1
> ' -7.1 -7 -8
> ' -7.6 -7 -8
>
> Więc wygląda na to, że moja funkcja jednak będzie szybsza tylko trzeba
> ją zaadoptować do C#.
>
> Jeszcze jedno pytanie jak C# realizowane jest:
> (C++)fun( & tocochcęotrzymać ) ?
>
> Przepraszam za mędzenie ale jeszcze zbyt wielu rzeczy nie rozumiem.
> Im dalej w las tym więcej drzew...
>
> Pozdrawiam
> S.Z.
Ta funkcja powinna wyglądać tak:
         private double modf(double pb, ref double intbase)
         {
             intbase = (double)((int)pb);
             return (pb - intbase);

         }
wywołanie " modf(val, ref a2)" najważniejsze jest słowo "ref";
Modyfikator może być private lub public zależy czy chcesz wykorzystywać 
tą funkcję w innych modułach.
pozdrawiam
JK
Re: Co zamiast?
#21528
Author: Zeus
Date: Tue, 01 Jun 2010 07:48
7 lines
1113 bytes
Wielkie dzięki.
Tego szukałem - to mniej więcej tak jak w początkach "C" zrozumienie co 
znaczy, że funkcja coś zwraca lub nie. No ale czasami człowiek idzie do 
"Pacanowa" i daleko szuka tego co jest bardzo blisko :-)

Pozdrawiam
S.Z.
modf() C# i clr
#21529
Author: Zeus
Date: Tue, 01 Jun 2010 13:17
18 lines
1347 bytes
No to dla innych potrzebujących:
/////////////////////////////////////////////////////////////
(C++Clr)
public: Decimal Modf(Decimal pb, Decimal %intbase)
{
	intbase = Math::Truncate(pb);
	return pb - intbase;
}
/////////////////////////////////////////////////////////////
C#
public Decimal Modf(Decimal pb, ref Decimal intbase)
{
	intbase = Math.Truncate(pb);
	return pb - intbase;
}
/////////////////////////////////////////////////////////////
Pozdrawiam
S.Z.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads