- このトピックは空です。
-
投稿者投稿
-
2021年6月29日 2:35 PM #400
古村俊一
ゲストお世話になっております。
wrSetDouble関数で、小数点の有効桁数が10桁以上出力されてしまいます。[設定内容]
nValue = -2330.92
wrSetDouble(hReport,pszObjectName,nValue,FALSE,10,
WOP_ROUND,WOP_EDITHNUM,
WOP_EDITFNORMAL)
結果 = -2330.92000000000
(結果 = -2330.92となるのが正しい)ちなみに nValue = 2330.92 とした場合
結果 = 2330.92
となりました(これは正しい)[動作環境]VB6+SP3,Windows98
使用モジュール
2000/06/15にダウンロードした最新モジュール以上 調査の程宜しくお願いします。
2021年6月29日 2:36 PM #401石原@ソフトウィング
ゲストお世話になっております。
早速調査してみますので少々お待ちください。
確認出来次第等掲示板にてご連絡致します。以上よろしくお願いいたします。
2021年6月29日 2:36 PM #402古村俊一
ゲストお世話になっております。
その後の調査はどのようになっていますでしょうか?
wrSetDouble関数について新たに確認した現象がありましたのでお知らせ致します。少数点以下の有効桁数の指定で場合によって正しい値が
表示されない場合があります。[設定内容]
nValue = 9999999999
wrSetDouble(hReport,pszObjectName,nValue,FALSE,
nDecimalPoint,WOP_ROUND,WOP_EDITHNUM,
WOP_EDITFNORMAL)(nDecimalPoint = 10 の場合)
結果 0 (9999999999 が正しい)(nDecimalPoint = 9 の場合)
結果 0 (9999999999 が正しい)(nDecimalPoint = 8 の場合)
結果 -8446744074.70955 (9999999999 が正しい)(nDecimalPoint = 7 以下の場合)
結果 9999999999 (正しいので良い)現在開発を行っているシステムでは
ある項目の設定可能な値が有効桁数が10桁(整数の場合999999999、小数の場合9.99999999)というものがあり、
印刷時小数部を8桁まで表示する必要があります。
また、設定されている内容に関係なく小数部の出力桁数を8桁まで指定可能(小数点以下0出力有り)な印刷項目があり、例えば入力[9999999999]という内容でも小数部8桁まで有効とすると出力[9999999999.00000000]と印刷したいのですが、上記にありますような現象が発生します。[動作環境]VB6+SP3,Windows98
使用モジュール
2000/06/15にダウンロードした最新モジュール以上 加えて調査の程宜しくお願いします。
2021年6月29日 2:36 PM #403石原@ソフトウィング
ゲストお世話になっております。
上記内容(結果 = -2330.92000000000になってしまう)
につきましては対応したのですが、大きな値でオーバーフロー
してしまう件は現象を確認いたしました。修正出来次第当掲示板にてご連絡差し上げます。
以上よろしくお願いいたします。
2021年6月29日 2:36 PM #404石原@ソフトウィング
ゲストお世話になっております。
御返事が遅くなりまして申し訳ございませんでした。
wrSetDoubleの修正版(テスト版)を作成いたしましたので、ご確認いただきたいと思っております。もしよろしければsupport@swg.co.jp宛にメールアドレスを送って
頂ければそのアドレス宛にモジュールを送付したいと考えておりますがいかがでしょうか?。以上よろしくお願いいたします。
2021年6月29日 2:37 PM #405古村俊一
ゲストお世話になっております。
早速送って頂いたwrSetDoubleの修正版(テスト版)にて
テストさせて頂きました。
結果、値が-2330.92000000000になったり、大きな値で
オーバーフローしてしまう現象は発生しなくなりました。
ありがとうございます。
ただ、修正版で小数の四捨五入が行われず切り捨てされてしまう現象が発生しました。
(現行では正常な結果が出力されていました。)
具体的には以下の通りです。[設定内容]
wrSetDouble(hReport,pszObjectName,nValue,FALSE,7,
WOP_ROUND,WOP_EDITHNUM,
WOP_EDITFNORMAL)
[nValueの値]
9.99999999 結果 = 9 (10となるのが正しい)
0.99999999 結果 = 0 ( 1となるのが正しい)
0.09999999 結果 = 0.1
0.00999999 結果 = 0.01
0.00099999 結果 = 0.001
0.00009999 結果 = 0.0001
0.00000999 結果 = 0.00001
0.00000099 結果 = 0.000001
0.00000009 結果 = 0.0000001あと、
[設定内容]
wrSetDouble(hReport,pszObjectName,nValue,FALSE,10,
WOP_ROUND,WOP_EDITHNUM,
WOP_EDITFNORMAL Or WOP_EDITFPADDINGZERO)
nValue = 9999999999
と指定した場合
結果 = 9999999999.00000 となります。
指定の内容通りだと
結果 = 9999999999.0000000000 となると思ったのですが、
倍精度型のデータの有効桁数が15桁であるという理由からなのでしょうか?以上よろしくお願い致します。
2021年6月29日 2:37 PM #406石原@ソフトウィング
ゲストお世話になっております。
お忙しいところ、早速の確認誠に有り難うございました。>設定内容]
>wrSetDouble(hReport,pszObjectName,nValue,FALSE,10,
> WOP_ROUND,WOP_EDITHNUM,
> WOP_EDITFNORMAL Or WOP_EDITFPADDINGZERO)
>nValue = 9999999999
>と指定した場合
>結果 = 9999999999.00000 となります。
>指定の内容通りだと
>結果 = 9999999999.0000000000 となると思ったのですが、
>倍精度型のデータの有効桁数が15桁であるという理由からなのでしょうか?上記内容はご指摘の通り有効桁数が15桁であるためです。
また切り捨ての件に関しましては再度調査いたします。以上よろしくお願いいたします。
2021年6月29日 2:37 PM #407古村俊一
ゲストいつもお世話になっております。
切り捨ての調査の件についてですが
その後の進展等はございましたでしょうか?
以上よろしくお願い致します。2021年6月29日 2:37 PM #408石原@ソフトウィング
ゲストお世話になっております。
本日、対応テストモジュールを古村様宛に送付させていただきましたのでご確認ください。
以上よろしくお願いいたします。
2021年6月29日 2:37 PM #409古村俊一
ゲストお世話になっております。
送って頂きましたテストモジュールを使用して前回と同様のテストを行ってみたところ、正常な値が出力される事を確認致しました。
対応の方をどうもありがとうございました。
それでは正式な修正版モジュールのリリースを心待ちにしておりますのでどうぞ宜しくお願い致します。 -
投稿者投稿
- フォーラム「旧サポート掲示板」には新規投稿および返信を追加できません。