r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[Core] Discuss core issues

Ladislav
15-Oct-2006
[5706]
I guess that if you will be able to describe what you really want, 
there will be no problem to get it
Graham
15-Oct-2006
[5707]
If you're dealing with $777,777  - then I suggest a professional 
accounting package is more appropriate.
Ladislav
15-Oct-2006
[5708]
I disagree, even when using a professional accounting package we 
need to know what we want to get
Gabriele
15-Oct-2006
[5709]
graham, my guess is that they are rupiahs, not dollars :)
Oldes
15-Oct-2006
[5710x4]
Louis: Ladislav is right, the money shows you just 2 decimals digits 
and rounds as you can see:
>>  777777 / 9220
== 84.3575921908894
>> to-money 777777 / 9220
== $84.36
>> (to-money 777777 / 9220) * 1000
== $84357.59
>> (to-money 777777 / 9220) * 1000000
== $84357592.19
What is suprise for me is, that it's not possible convert money to 
decimal using:    to-decimal $84.36
I think, that money datatype is almost useless
For example why is not working this?
>> $10 * $10
** Script Error: Expected one of: number! - not: money!
** Near: $10.00 * $10.00
Money is not a number?
Anton
15-Oct-2006
[5714]
The specified unit ($) would also have to be multiplied to be consistent 
there. We had this discussion before when talking about the proposed 
Rebol v3 deci! datatype...  Anyway, I agree there are problems, but 
this works:
>> 10 * $10
== $100.00
Ladislav
15-Oct-2006
[5715]
Oldes - you *can* convert money! to decimal as follows: second  $84.36 
; == 84.36
Anton
15-Oct-2006
[5716]
I wish I could divide the money in my bank account into $10 amounts 
and then just multiply them, but the bank won't let me. I don't know 
why.
Oldes
15-Oct-2006
[5717x4]
Ok, you are right, I know I can do 10 * $10 and it's probably logical, 
but anyway, for me money is a number and this is new form me:
>> second (to-money 777777 / 9220)
== 84.3575921908894
(anyway, I'm not going to use money datatype)
and it should be possible to do $10 * $10 as in the Louis' example 
above, the number 9220 should be money datatype as well as it is 
number of roupies per dollar  (if I understand it well) so he should 
use RP$9220 if he is using money! for dollars
I doubt, someone is using this feature (currency identifier) with 
money datatype:-)
Anton
15-Oct-2006
[5721x4]
Louis' example did not multiply two money!s.
and I strongly disagree that you should be able to multiply two money!s.
A currency exchange rate (such as Louis' 9220) includes, as part 
of its definition, two distinct currencies (eg. RP and USD).
Anyway, I don't want to argue this, you should know about how to 
handle units. Everyone should know that 10 Metres x 10 Metres does 
not equal 100 Metres.
Louis
15-Oct-2006
[5725]
All this is very interesting. I appreciate all of your comments. 
Anyway I have a workaround to the problem. First of all, however, 
I need to tell you why I wanted to be able to convert dollars back 
to rupiahs. It was just to save space in the database. I enter rupiahs, 
as that is the currency I am using right now, but the software converts 
it to dollars and saves the dollar amount to the database. To find 
out the  rupiah amount later if needed, I was going to do a reverse 
conversion. The other solution is to simply record the rupiah amount 
in the database also, so that is what I'll do.
Oldes
15-Oct-2006
[5726]
by the way, you may use the conversions on the side of the database 
during select
Louis
15-Oct-2006
[5727]
Oldes, please explain. I do not understand what you mean.
Oldes
15-Oct-2006
[5728]
mysql> create table test (dolars float(2));
Query OK, 0 rows affected (0.22 sec)
mysql> insert into test values(777777);
Query OK, 1 row affected (0.03 sec)
mysql> select dolars,(dolars / 9220) as rupias from test;
+--------+-----------------+
| dolars | rupias          |
+--------+-----------------+
| 777777 | 84.357592190889 |
+--------+-----------------+
1 row in set (0.01 sec)
Louis
15-Oct-2006
[5729x2]
So I could get the reverse conversion I want if I were using mysql?
Right now I'm simply using a rebol object database. It would be very 
difficult to change this particular script. But if I ever do something 
like this again I may consider using mysql.
Oldes
15-Oct-2006
[5731x2]
If you are using Rebol, you should probably use decimals, not money 
datatype
(to store it in the database)
Louis
16-Oct-2006
[5733x3]
Oldes, yes. I can see that you are right. Store in decimal. Display 
in money.

>> r: 777777
== 777777
>> x: 9220
== 9220
>> d: r / x
== 84.3575921908894
>> d * x
== 777777.0
>> to-money d
== $84.36
>>
I've converted the script to decimal, and it works great!
Decimal is converted to money for reports.
BrianH
16-Oct-2006
[5736]
Watch out though - your problem wasn't a decimal vs. money problem, 
it was a rounding problem. If you are going to store the dollar equvalent 
in a database make sure to store it as a floating-point value rather 
than a fixed-point like SQL's decimal type. Otherwise you are going 
to run into the same problem when you store the data and retrieve 
it again.
Louis
16-Oct-2006
[5737]
Yes, I understand this. I think I've done this right. View, however, 
I don't understand.
BrianH
16-Oct-2006
[5738]
You and me both.
Jerry
19-Oct-2006
[5739]
How do I use the CALL native function to call a external program 
via shell and wait for the program to finish. I try the /wait refinement, 
but it does not work.
* Example: 
call/wait "regedt32 /E C:\backup.reg"
PeterWood
19-Oct-2006
[5740x4]
It appears to be something specific to the application being called. 
Both call/wait "cmd" and call/wait "C:\Program Files\rebol\view\rebol.exe" 
worked as expected for me though call/wait "regedt32" didn't.
Regedt32 is returning a 0 completion code to Rebol as it is being 
loaded which Rebol returns from the call:
>> call/wait "C:\Windows\System32\regedt32.exe"
== 0
This suggests that regedt32 is simply a loader for another program.
From http://en.wikipedia.org/wiki/Windows_Registryit seems that 
regedt32.exe invokes regedit.exe.


The page also hints that it may be better to use reg.exe to update 
the registry from a script
Jerry
19-Oct-2006
[5744x2]
Thank you, Peter.
I've just got an Out-Of-Memory error.

Is there any way to have more virtual memory for REBOL to use. In 
Java, I can use command-line options to ask the OS to allocate more 
memory for my app. In REBOL, I have no idea.
Maxim
19-Oct-2006
[5746]
on windows?
Gregg
19-Oct-2006
[5747]
REBOL should just use all it needs. What are you trying to do?
Maxim
19-Oct-2006
[5748x3]
on windows, the OS should give you all the VM until the OS runs out. 
 I've had REBOL use more than 1 GB of RAM... without doing anything 
special.
(obviously, perfomance drops dramatically... but that's the OS's 
fault)
the machine only had 512MB of physical RAM btw.
Graham
19-Oct-2006
[5751]
I've seen this happen before ... brings windows to a stop :(
Maxim
19-Oct-2006
[5752x2]
you just need to have more VM setup than all apps need... at least 
it wont crash windows.
but like you say... it crawls... on its back.
Allen
19-Oct-2006
[5754x2]
Jerry, was it a "real" memory error, or where you just trying to 
decompress damaged data?
>> d: compress "jsagkjdsjhgkjdshgkjdhf"
== #{789CCB2A4E4CCFCE4A29CECA00536032230D00688B090D16000000}
>> decompress random  d
** Script Error: Not enough memory
** Near: decompress random d