Sorry, here is the full code so you might have a better idea of what goes where. It is a gui app written in Tk.

#!/usr/local/bin/perl -w #perl2exe_include Tk; #perl2exe_include Tk::Photo; #perl2exe_include strict; use Tk; use Tk::Photo; use strict; ########################################### ########################################### ## ## ## This script is a graphical interface ## ## that allows a user to easily convert ## ## IP bandwidth into ATM PCR. ## ## PCR = (Peak Cell rate) ## ## ## ########################################### ########################################### our($choice, $cb, $pcr, $bps, $status, $answer, $cell_size, $cell_size +2); my $window = MainWindow->new; $window->title("ip2atm"); my $frame_space = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame_space2 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame2 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame_space3 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame3 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame4 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame_space5 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame5 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame6 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame_space7 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame7 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame_space8 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame8 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame9 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame10 = $window->Frame->pack(-side=>'top', -fill=>'x'); $frame_space->Label()->pack(-fill=>'x'); $frame->Label(-text=>"Choose Conversion Type")->pack(-side=>'top', -an +chor=>'n'); $frame->Label(-text=>" ")->pack(-side=>'left', -anchor=>'w'); $frame->Button(-text=>"Cells to Bits", -command=>\&cb)-> pack(-side=>'left', -anchor=>'w', -fill=>'none'); $frame->Label(-text=>" ")->pack(-side=>'right', -anchor=>'e'); $frame->Button(-text=>"Bits to Cells", -command=>\&bc)-> pack(-side=>'right', -anchor=>'e', -fill=>'none'); $frame_space2->Label()->pack(-fill=>'x'); $frame2->Label(-text=>"Conversion Type Being Used")->pack(-side=>'top' +, -anchor=>'n'); $frame2->Entry(-textvariable=>\$choice)-> pack(-side=>'bottom', -anchor=>'n', -fill=>'none'); $frame_space3->Label()->pack(-fill=>'x'); $frame3->Label(-text=>" ")->pack(-side=>'left', -anchor=>'w'); $frame3->Label(-text=>"Enter Peak Cell Rate")->pack(-side=>'left', -an +chor=>'w'); $frame3->Label(-text=>" ")->pack(-side=>'right', -anchor=>'e'); $frame3->Label(-text=>"Enter Bits Per Second")->pack(-side=>'right', - +anchor=>'e'); $frame4->Label(-text=>" ")->pack(-side=>'left', -anchor=>'w'); $frame4->Entry(-textvariable=>\$pcr)-> pack(-side=>'left', -anchor=>'w', -fill=>'none'); $frame4->Label(-text=>" ")->pack(-side=>'left', -anchor=>'w'); $frame4->Label(-text=>" ")->pack(-side=>'right', -anchor=>'e'); $frame4->Entry(-textvariable=>\$bps)-> pack(-side=>'right', -anchor=>'e', -fill=>'none'); $frame_space5->Label()->pack(-fill=>'x'); $frame5->Label(-text=>" ")->pack(-side=>'left', -anchor=>'w'); $frame5->Label(-text=>"Enter Cell Size")->pack(-side=>'left', -anchor= +>'w'); $frame5->Label(-text=>" ")->pack(-side=>'right', -anchor=>'e'); $frame5->Label(-text=>"Enter Cell Size")->pack(-side=>'right', -anchor +=>'e'); $frame6->Label(-text=>" ")->pack(-side=>'left', -anchor=>'w'); $frame6->Entry(-textvariable=>\$cell_size)-> pack(-side=>'left', -anchor=>'w', -fill=>'none'); $frame6->Label(-text=>" ")->pack(-side=>'left', -anchor=>'w'); $frame6->Label(-text=>" ")->pack(-side=>'right', -anchor=>'e'); $frame6->Entry(-textvariable=>\$cell_size2)-> pack(-side=>'right', -anchor=>'e', -fill=>'none'); $frame_space7->Label()->pack(-fill=>'x'); $frame7->Button(-text=>" Convert ", -command=>\&convert)-> pack(-side=>'top', -anchor=>'n'); $frame_space8->Label()->pack(-fill=>'x'); $frame8->Label(-text=>" Answer ")->pack(-side=>'top', -anchor=>'n'); $frame9->Label(-text=>" ")->pack(-side=>'left', -anchor=>'w'); $frame9->Entry(-textvariable=>\$answer)-> pack(-side=>'top', -anchor=>'n', -fill=>'none'); $frame10->Button(-text=>" Exit ", -command=>sub{exit;})-> pack(-side=>'bottom', -anchor=>'e'); $window->Label(-textvariable=>\$status, -relief=>'ridge')-> pack(-side=>'bottom', -fill=>'x'); if (-e "converter.gif") { $window->Photo('image', -file=>"converter.gif"); $window->Label(-image=>'image')->pack(-side=>'bottom'); } $status = "Written by: Me"; MainLoop; sub cb { $choice = "Cells to Bits"; $bps = "N/A"; $cell_size2 = "N/A"; $pcr = ""; $cell_size = ""; $answer = ""; } sub bc { $choice = "Bits to Cells"; $pcr = "N/A"; $cell_size = "N/A"; $bps = ""; $cell_size2 = ""; $answer = ""; } sub convert { my ($len1, $type); if ($choice eq "Cells to Bits") { if ($pcr && $cell_size) { $answer = $pcr * $cell_size * 8; $len1 = length($answer); print $len1,"\n"; print $answer,"\n"; if (($len1 < 4) || ($len1 > 15)) { $type = "b/s"; }elsif (($len1 >= 4) && ($len1 <= 6)) { $type = "Kb/s"; $answer = substr($answer, 0, 1)." ".$type if $len1 == 4; $answer = substr($answer, 0, 2)." ".$type if $len1 == 5; $answer = substr($answer, 0, 3)." ".$type if $len1 == 6; }elsif (($len1 >= 7) && ($len1 <= 9)) { $type = "Mb/s"; $answer = substr($answer, 0, 1)." ".$type if $len1 == 7; $answer = substr($answer, 0, 2)." ".$type if $len1 == 8; $answer = substr($answer, 0, 3)." ".$type if $len1 == 9; }else{ $type = "Gb/s"; foreach (my $count=1; $count<10; $count++) { chop($answer); } $answer .= " ".$type; } $status = "Conversion Successfull!"; }else{ $status = "Error: required field missing!"; } }elsif ($choice eq "Bits to Cells") { if ($bps && $cell_size2) { $answer = $bps / 8 / $cell_size2; $answer = sprintf("%.0f", $answer) . " cps"; $status = "Conversion Successfull!"; }else{ $status = "Error: required field missing!"; } }else{ $status = "Error: required field missing!"; } }
I know that after 15 digits (yes integers) that the format changes to scientific notation therefore I have coded that into my script but after I think

Here is a debugger output I have going to the command prompt to check the value of the 2 variables ($len1 and $answer) and you cans ee where the length jumps back down and screws me.

5 41976 6 423576 7 4239576 8 42399576 9 423999576 10 4239999576 11 42399999576 12 423999999576 13 4239999999576 14 42399999999576 15 423999999999576 21 4.23999999999958e+015 21 4.23999999999996e+016 9 4.24e+017

The first number (as you can see by the code) is the value of the length in digits of the answer and the second (longer number) is the actual answer.


In reply to Re: Re: Scientific Notation Throws Off Results. by Elijah
in thread Scientific Notation Throws Off Results. by Elijah

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.