Ever heard of casting?
-
Never mind casting - at least he didn't use a loop:
decimal tenE18 = 1; for (int i = 0; i < 18; i++) { tenE18 \*= 10; }
Still, I think I will stick to the old-fashioned, boring way:
decimal d = 1E18M;
[edit]Got the number of zeros wrong, didn't I? Oops.[/edit]
You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
modified on Wednesday, March 3, 2010 11:21 AM
-
Never mind casting - at least he didn't use a loop:
decimal tenE18 = 1; for (int i = 0; i < 18; i++) { tenE18 \*= 10; }
Still, I think I will stick to the old-fashioned, boring way:
decimal d = 1E18M;
[edit]Got the number of zeros wrong, didn't I? Oops.[/edit]
You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
modified on Wednesday, March 3, 2010 11:21 AM
OriginalGriff wrote:
Still, I think I will stick to the old-fashioned, boring way:
decimal d = 10E18M;
//
// TODO: Check the number is 10^18
//decimal bigNumber = 1000000000000000000M;
This makes the old-fashioned way more exciting :laugh:
I have no smart signature yet...
-
Never mind casting - at least he didn't use a loop:
decimal tenE18 = 1; for (int i = 0; i < 18; i++) { tenE18 \*= 10; }
Still, I think I will stick to the old-fashioned, boring way:
decimal d = 1E18M;
[edit]Got the number of zeros wrong, didn't I? Oops.[/edit]
You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
modified on Wednesday, March 3, 2010 11:21 AM
run your code -> how many digits do you count? ;P
-
well you can do something that save time and processing time, try this decimal res = 10; decimal rem = 1; int pow = 18; while(pow > 0) { res *= res; rem *= (pow%2)? 1:10; pow /= 2; } res *= rem;
:wtf: test your code - it saves processing time, but raises debug time - if you are able to compile it ;P
-
run your code -> how many digits do you count? ;P
I did - and checked they gave the same results before I posted it. ;P
You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
-
well you can do something that save time and processing time, try this decimal res = 10; decimal rem = 1; int pow = 18; while(pow > 0) { res *= res; rem *= (pow%2)? 1:10; pow /= 2; } res *= rem;
that is completely wrong in many ways. did you try a simple example, say pow=1? :~
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that.
-
I did - and checked they gave the same results before I posted it. ;P
You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
:omg: lol - same results... Check it:
using System;
namespace DecimalTest
{
class Program
{
static void Main(string[] args)
{
decimal divider;
// we need 10^18, but Math.Pow does not support decimal
// types and decimal does not provide a power function
divider = 10*10*10;
divider = Decimal.Multiply(divider,10*10*10*10*10);
divider = Decimal.Multiply(divider,10*10*10*10*10);
divider = Decimal.Multiply(divider,10*10*10*10*10);
Console.WriteLine(divider);decimal tenE18 = 10; for (int i = 0; i < 18; i++) tenE18 \*= 10; Console.WriteLine(tenE18); Console.WriteLine(10E18M); Console.WriteLine(String.Format("{0:N}", Math.Pow(10d, 18d))); Console.ReadKey(); } }
}
who invented those nasty zero!?! :laugh:
-
:omg: lol - same results... Check it:
using System;
namespace DecimalTest
{
class Program
{
static void Main(string[] args)
{
decimal divider;
// we need 10^18, but Math.Pow does not support decimal
// types and decimal does not provide a power function
divider = 10*10*10;
divider = Decimal.Multiply(divider,10*10*10*10*10);
divider = Decimal.Multiply(divider,10*10*10*10*10);
divider = Decimal.Multiply(divider,10*10*10*10*10);
Console.WriteLine(divider);decimal tenE18 = 10; for (int i = 0; i < 18; i++) tenE18 \*= 10; Console.WriteLine(tenE18); Console.WriteLine(10E18M); Console.WriteLine(String.Format("{0:N}", Math.Pow(10d, 18d))); Console.ReadKey(); } }
}
who invented those nasty zero!?! :laugh:
Yeah, I checked my results matched! :-O I didn't check his! Oops.
You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
-
OriginalGriff wrote:
Still, I think I will stick to the old-fashioned, boring way:
decimal d = 10E18M;
//
// TODO: Check the number is 10^18
//decimal bigNumber = 1000000000000000000M;
This makes the old-fashioned way more exciting :laugh:
I have no smart signature yet...
using System;
namespace DecimalTest
{
class Program
{
static void Main(string[] args)
{
decimal bigNumber = 1000000000000000000M;
decimal bigNumber2 = 10E18M;Console.WriteLine("Is {0} the same as {1}?", bigNumber, bigNumber2); if (bigNumber == bigNumber2) Console.WriteLine("WTF???"); else Console.WriteLine("No - Maths saved!"); Console.ReadKey(); } }
}
-
Yeah, I checked my results matched! :-O I didn't check his! Oops.
You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
yea - it was even hard for me to check his crazy code - lol. There is some resistence to execute such a thing - :)
-
This is an excerpt from some sample code provided in the documentation for an EFT interface
decimal divider;
// we need 10^18, but Math.Pow does not support decimal
// types and decimal does not provide a power function
divider = 10*10*10;
divider = Decimal.Multiply(divider,10*10*10*10*10);
divider = Decimal.Multiply(divider,10*10*10*10*10);
divider = Decimal.Multiply(divider,10*10*10*10*10);Blows my mind :-)
castling? sure, I do it every day. :)
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that.
-
well you can do something that save time and processing time, try this decimal res = 10; decimal rem = 1; int pow = 18; while(pow > 0) { res *= res; rem *= (pow%2)? 1:10; pow /= 2; } res *= rem;
-
:wtf: test your code - it saves processing time, but raises debug time - if you are able to compile it ;P
it might have a syntax error but you can do it this way.. you can refer algorithm by corman... n compare to given algo for (int i = 0; i < 18; i++) { tenE18 *= 10; } this one will run for 18times.. for debuging also you have to go through this loop 18 times... then how can you say algo i gave takes more time to debug.. complexity of given algo is O(n) and complexity of algo i gave is O(lg(n))....
modified on Wednesday, March 3, 2010 10:37 PM
-
it might have a syntax error but you can do it this way.. you can refer algorithm by corman... n compare to given algo for (int i = 0; i < 18; i++) { tenE18 *= 10; } this one will run for 18times.. for debuging also you have to go through this loop 18 times... then how can you say algo i gave takes more time to debug.. complexity of given algo is O(n) and complexity of algo i gave is O(lg(n))....
modified on Wednesday, March 3, 2010 10:37 PM
chevu wrote:
how can you say algo i gave takes more time to debug.. complexity of given algo is O(n)
O(n) and O(lg(n)) apply to execution time, not debugging time. There are no formulas for debugging time; it depends on number of statements, decision points, readability of code, and initial number of bugs. Your code has more than 5 bugs, it will take you lots of time to find all of them. I suggest you try and fix and run it until the result is correct. :|
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that.
-
yea - it was even hard for me to check his crazy code - lol. There is some resistence to execute such a thing - :)
-
sorry i messed up with code... This one is correct code
decimal res = 10;
decimal multi = 10;
decimal rem = 1;
int pow = 18;//For pow 0 you can directly return with 0while(pow > 1)
{
res *= res;
rem *= (pow%2)? multi:1;
pow /= 2;
}
res *= rem;chevu wrote:
This one is correct code
wrong again: 1. the result for pow=18 is wrong. 2. pow=5 and pow=6 give the same result??? I think you have abundantly proven now that your code has high debugging complexity. :(
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that.
-
chevu wrote:
This one is correct code
wrong again: 1. the result for pow=18 is wrong. 2. pow=5 and pow=6 give the same result??? I think you have abundantly proven now that your code has high debugging complexity. :(
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that.
sorry dude... i had really forget to check till 18... coz of odd even cases that code will fail... I knw you people are getting irritated by now, but you can check this code
double pow(long long a, long long b)
{
if(b == 0)
return 1.0;
else if(b == 1)
return a;
else if(b%2 == 0)
return pow(a*a,b/2);
else
return a* pow(a*a,b/2);
}i have tested this code upto long long limits...
-
sorry dude... i had really forget to check till 18... coz of odd even cases that code will fail... I knw you people are getting irritated by now, but you can check this code
double pow(long long a, long long b)
{
if(b == 0)
return 1.0;
else if(b == 1)
return a;
else if(b%2 == 0)
return pow(a*a,b/2);
else
return a* pow(a*a,b/2);
}i have tested this code upto long long limits...
Recursive functions brings color in life :-D
I have no smart signature yet...
-
sorry dude... i had really forget to check till 18... coz of odd even cases that code will fail... I knw you people are getting irritated by now, but you can check this code
double pow(long long a, long long b)
{
if(b == 0)
return 1.0;
else if(b == 1)
return a;
else if(b%2 == 0)
return pow(a*a,b/2);
else
return a* pow(a*a,b/2);
}i have tested this code upto long long limits...
-
chevu wrote:
long long a
If I were a canadian, thats how I would describe this thread.
modified on Thursday, March 4, 2010 8:11 AM