To detect a residual capacity with high accuracy without increasing the resolution of a current detection means.
When an ignition switch is turned off (S8; Y), a computing device samples offset current values Io by means of a current detection circuit for a certain time after the elapse of a predetermined time, divides its total value ΣIo by the number (x) of times of sampling, and stores the quotient (offset value SIB) and the remainder (offset correction value SSIB) in a nonvolatile memory (S9-S12). Further, a battery opening voltage OCV is detected by a voltage detection circuit and stored in a nonvolatile memory (S13). When the ignition switch is turned on (S1; Y), the computing device calculates the initial value A0 of a residual capacity from the battery opening voltage OCV (S4) and detects using the current detection circuit a charge/discharge current Ic flowing in the secondary battery. The computing device then corrects the detected current value Ic by use of the offset value SIB and the offset correction value SSIB, integrates the corrected current values IB, and calculates the residual capacity A on the basis of the integrated value ΣIB and the initial value A0.