Difference between revisions of "FormattingDecimals"
m |
m |
||
Line 23: | Line 23: | ||
<td style="background-color:#ddffdd;border:black 1px dashed;"> |
<td style="background-color:#ddffdd;border:black 1px dashed;"> |
||
<pre> |
<pre> |
||
− | loadMacros("PGstandard.pl","MathObjects.pl"); |
||
+ | DOCUMENT(); |
||
+ | |||
+ | loadMacros( |
||
+ | "PGstandard.pl", |
||
+ | "MathObjects.pl" |
||
+ | ); |
||
+ | |||
+ | TEXT(beginproblem()); |
||
</pre> |
</pre> |
||
</td> |
</td> |
||
Line 39: | Line 46: | ||
<td style="background-color:#ffffdd;border:black 1px dashed;"> |
<td style="background-color:#ffffdd;border:black 1px dashed;"> |
||
<pre> |
<pre> |
||
− | $a = random(3,7,1); |
||
+ | # |
||
− | # log is natural log, and ln is also natural log |
||
+ | # both ln and log are natural log (base e) |
||
− | $b = sprintf("%0.3f", log($a)/log(10) ); |
||
+ | # |
||
+ | |||
+ | $a = 6; # or $a = random(3,7,1); |
||
+ | |||
+ | # |
||
+ | # log base e |
||
+ | # |
||
+ | $b = sprintf("%0.3f", ln($a) ); # or log($a) |
||
+ | $solution1 = Real("$b"); |
||
+ | |||
+ | $f = Formula("ln(x)"); # or log(x) |
||
+ | $solution2 = $f->eval(x=>$a); |
||
+ | |||
+ | # |
||
+ | # log base 10 |
||
+ | # |
||
+ | $c = sprintf("%0.3f", ln($a)/ln(10) ); # or log($a)/log(10) |
||
+ | $solution3 = Real("$c"); |
||
+ | |||
+ | $g = Formula("ln(x)/ln(10)"); # or log(x)/log(10) |
||
+ | $solution4 = $g->eval(x=>$a); |
||
</pre> |
</pre> |
||
</td> |
</td> |
||
Line 53: | Line 80: | ||
</p> |
</p> |
||
<p> |
<p> |
||
− | Note: If we load <code>MathObjects.pl</code>, then <code>log</code> and <code>ln</code> are both defined to be the natural logarithm (base e, not base 10). If we had loaded the older <code>PGauxiliaryFunctions.pl</code> macro instead, then |
+ | Note: If we load <code>MathObjects.pl</code>, then <code>log</code> and <code>ln</code> are both defined to be the natural logarithm (base e, not base 10). If we had loaded the older <code>PGauxiliaryFunctions.pl</code> macro instead, then <code>log</code> would be defined as the natural logarithm (base e, not base 10), and <code>ln</code> would be undefined. |
</p> |
</p> |
||
</td> |
</td> |
||
Line 63: | Line 90: | ||
<td style="background-color:#ffdddd;border:black 1px dashed;"> |
<td style="background-color:#ffdddd;border:black 1px dashed;"> |
||
<pre> |
<pre> |
||
+ | Context()->texStrings; |
||
BEGIN_TEXT |
BEGIN_TEXT |
||
− | \( $b = \) \{ ans_rule(20) \} |
||
+ | Notice the formatting and rounding differences between \( $solution1 \) and \( $solution2 \). |
||
+ | $BR |
||
+ | $BR |
||
+ | Try entering \( \ln($a), \log($a), \ln($a)/\ln(10), \log($a)/\log(10) \). |
||
+ | $BR |
||
+ | $BR |
||
+ | \( \ln($a) = \) \{ ans_rule(20) \} |
||
+ | $BR |
||
+ | \( \ln($a) = \) \{ ans_rule(20) \} |
||
+ | $BR |
||
+ | \( \log_{10}($a) = \) \{ ans_rule(20) \} |
||
+ | $BR |
||
+ | \( \log_{10}($a) = \) \{ ans_rule(20) \} |
||
END_TEXT |
END_TEXT |
||
+ | Context()->normalStrings; |
||
</pre> |
</pre> |
||
<td style="background-color:#ffcccc;padding:7px;"> |
<td style="background-color:#ffcccc;padding:7px;"> |
||
<p> |
<p> |
||
<b>Main Text:</b> |
<b>Main Text:</b> |
||
− | Display the formatted number. |
||
+ | Notice the difference in decimal formatting when "Show Correct Answers" is checked and you click "Submit Answers". |
||
</p> |
</p> |
||
</td> |
</td> |
||
Line 82: | Line 123: | ||
<td style="background-color:#eeddff;border:black 1px dashed;"> |
<td style="background-color:#eeddff;border:black 1px dashed;"> |
||
<pre> |
<pre> |
||
− | ANS( $ |
+ | ANS( $solution1->cmp() ); |
+ | ANS( $solution2->cmp() ); |
||
+ | ANS( $solution3->cmp() ); |
||
+ | ANS( $solution4->cmp() ); |
||
+ | |||
+ | ENDDOCUMENT(); |
||
</pre> |
</pre> |
||
<td style="background-color:#eeccff;padding:7px;"> |
<td style="background-color:#eeccff;padding:7px;"> |
Revision as of 15:30, 16 January 2010
Formatting Decimals: PG Code Snippet
We show how to format decimals for display in PG problems. Note that these are insertions, not a complete PG file. This code will have to be incorporated into the problem file on which you are working.
PG problem file | Explanation |
---|---|
DOCUMENT(); loadMacros( "PGstandard.pl", "MathObjects.pl" ); TEXT(beginproblem()); |
Initialization: Standard. |
# # both ln and log are natural log (base e) # $a = 6; # or $a = random(3,7,1); # # log base e # $b = sprintf("%0.3f", ln($a) ); # or log($a) $solution1 = Real("$b"); $f = Formula("ln(x)"); # or log(x) $solution2 = $f->eval(x=>$a); # # log base 10 # $c = sprintf("%0.3f", ln($a)/ln(10) ); # or log($a)/log(10) $solution3 = Real("$c"); $g = Formula("ln(x)/ln(10)"); # or log(x)/log(10) $solution4 = $g->eval(x=>$a); |
Setup:
Use perl's We used the logarithm change of base formula log10(a) = log(a) / log(10) = ln(a) / ln(10) to get a logarithm base 10.
Note: If we load |
Context()->texStrings; BEGIN_TEXT Notice the formatting and rounding differences between \( $solution1 \) and \( $solution2 \). $BR $BR Try entering \( \ln($a), \log($a), \ln($a)/\ln(10), \log($a)/\log(10) \). $BR $BR \( \ln($a) = \) \{ ans_rule(20) \} $BR \( \ln($a) = \) \{ ans_rule(20) \} $BR \( \log_{10}($a) = \) \{ ans_rule(20) \} $BR \( \log_{10}($a) = \) \{ ans_rule(20) \} END_TEXT Context()->normalStrings; |
Main Text: Notice the difference in decimal formatting when "Show Correct Answers" is checked and you click "Submit Answers". |
ANS( $solution1->cmp() ); ANS( $solution2->cmp() ); ANS( $solution3->cmp() ); ANS( $solution4->cmp() ); ENDDOCUMENT(); |
Answer Evaluation: Standard. |