Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# Perl divide by zero problem with varibles extracted from text

Posted on 2008-10-20
Medium Priority
816 Views
Last Modified: 2013-12-12
I have the following code, with give a dividing by zero problem. Obviously, the \$fields[1] is not supposed to be zero. It print out a decimal number when direct print out. And it can be added to another varible with + and arithmetic is fine. But when it is in the denominator it it cuase such a message:

Illegal division by zero at E:\CruzerLock2\Stocks\quote2.pl line 151, <GEN0> lin
e 13.

The code segment look like this:

my \$change = sprintf "%.2f",  ( \$fields[4]) / (\$fields[1])*100;

Is there something hidden in the fields[1] that couse this? Thanks
0
Question by:zzhang2006
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• Learn & ask questions
• 3
• 2
6 Comments

LVL 48

Expert Comment

ID: 22764142
\$fields[1] must be 0 to cause the error.

Add a

print "\$. \$fields[1]\n";

before line 151 and post the output.
0

LVL 1

Author Comment

ID: 22764311
You may be right, I change it to

print "See this->  \$. \$fields[1] \n";

my \$change = sprintf "%.2f",
( \$fields[4]) /\$fields[1]*100;
Then it printed:

See this->  13
Illegal division by zero at E:\CruzerLock2\Stocks\quote2.pl line 152, <GEN0> lin
e 13.

Does a blank means zero? Where is the "13" come from? How can I put a condition to check \$fields[1] not zero or simply being a number? Thanks
0

LVL 84

Accepted Solution

ozo earned 2000 total points
ID: 22764361
Blank is treated as 0 when used in arithmetic
\$. is the input line number.
0

LVL 84

Expert Comment

ID: 22764364
perldoc-q "How do I determine whether a scalar is a number/whole/integer/float"
0

LVL 1

Author Comment

ID: 22764429
Great! I solved my problem. Thanks
0

LVL 1

Author Comment

ID: 22764431
Great!
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Are you an Exchange administrator employed with an organization? And, have you encountered a corrupt Exchange database due to which you are not able to open its EDB file. This article will explain all the steps to repair corrupt Exchange database.
Want to know how to use Exchange Server Eseutil command? Go through this article as it gives you the know-how.
This video shows how use content aware, what itâ€™s used for, and when to use it over other tools.
The viewer will learn how to successfully download and install the SARDU utility on Windows 8, without downloading adware.
###### Suggested Courses
Course of the Month8 days, 22 hours left to enroll

#### 721 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.