四角の図を書いて、プロパティのサイズを幅20、高10と入力する。
その後再びプロパティのサイズを見ると幅19.99、高10.01 と表示される。
寸法線などでの寸法は、正しく幅20高さ10と表示されるので、印刷すれば支障は無いといえば無いのですが、どうにも気持ち悪い。
表示が小数点2桁まで出ているので、これが小数点1桁表示にする事が出来れば、多分四捨五入で表面上正しく表示してストレスが無くなるのですが、いい方法がないものでしょうか?
LiberOffice Ver 6.0.2.1
四角の図を書いて、プロパティのサイズを幅20、高10と入力する。
その後再びプロパティのサイズを見ると幅19.99、高10.01 と表示される。
寸法線などでの寸法は、正しく幅20高さ10と表示されるので、印刷すれば支障は無いといえば無いのですが、どうにも気持ち悪い。
表示が小数点2桁まで出ているので、これが小数点1桁表示にする事が出来れば、多分四捨五入で表面上正しく表示してストレスが無くなるのですが、いい方法がないものでしょうか?
LiberOffice Ver 6.0.2.1
2018-04-07 ほぼ全面改訂
自信なし。回答欄使うけど、回答にあらず。強い違和感あるけど仕様…かなぁ?ズレが見られるのはサイドバーのパネルだけでコンテキストメニューから呼び出すダイアログは問題ないので仕様ではない
通りすがり氏の実装に関する推測は正しい。ログを取ってみたら394とそこから10.01が出てきていた。(計算の一部数値をhimajin100000側で書き換えてます)
多分、内部での計算は全てインチで行い、表示時にcmに変換するのでしょう。 問題は、内部計算毎に小数点3位で四捨五入して小数点2桁にしているのではないのでしょうか。
10cm=3.93700787401575in→3.94in=3.94x2.54=10.0076 →10.01
20cm=7.8740157480315in→7.87in=7.87x2.54=19.9898 → 19.99
で、以下、やや推測込み。
869行目でメンバ変数meDlgUnitに代入がなされる。このメンバ変数に代入が行われるのは、ソースコード上ここだけである。
5. ところで、 SetFieldUnitは、指定されたコントロールの内部で保持するときの単位を指定している。
https://opengrok.libreoffice.org/xref/core/svx/source/sidebar/possize/PosSizePropertyPanel.cxx?r=44d5188b#531
2018-04-20 追記:
cmをinchに変換するからずれるのであって、コンストラクタがPozSizePropertyPanelの数値の内部管理meDlgUnit(後にSetFieldUnitでMetricFieldの単位meUnitにも利用される)をcmで行うように変えれば単位同じだからずれないだろう、という策なので、コンストラクタ実行後にツール→オプションで内部管理単位をINCHに変更してOKしてから再びCMに戻すとズレます。このコード変更は「軽減するだけ」です。
ここからコード上未調査・未解決。話はここで終わらないのだ。どのタイミングでコンストラクタが走っているのか、という問題だ。
問題が起きているバージョンで話を進める。なお、以下の項目の手順は互いに独立である。
2020年5月10日のビルドで、当該現象が「ほぼ」 再現しない ことを確認しました。
2020年5月23日のビルドで、当該現象が 再現しない ことを確認しました。
再び、大まかに理解した。そのうち英語でバグレポ、場合によってはパッチも書くかもしれませんが、面倒なのでそれなりに遅れる予定。以下罫線等の話は無視する。
https://bugs.documentfoundation.org/show_bug.cgi?id=99711 (VERIFIED FIXED)
https://bugs.documentfoundation.org/show_bug.cgi?id=118837 (RESOLVED DUPLICATE)
>himajin100000の回答から
多分、内部での計算は全てインチで行い、表示時にcmに変換するのでしょう。
問題は、内部計算毎に小数点3位で四捨五入して小数点2桁にしているのではないのでしょうか。
10cm=3.93700787401575in →3.94in=3.94x2.54=10.008 →10.01
20cm=7.8740157480315in →7.87in=7.87x2.54=19.990 →19.99
せめて内部的には、小数点4桁で四捨五入して小数点3桁で丸める。
cmに変換する最終形態にする時に小数点2桁にまとめるようにすると誤差は生じ難いと思います。
以上の修正は、根本的なことの様で困難な様でもあり、簡単に修正できるようなことでもあり。
少なくとも最終形態が小数点2桁なら、内部計算は小数点3桁以上の数値で行わなければ、誤差は必ず発生しますので、バクといえばバグです。
全て私の推測なので実際内部での計算が小数点2桁に丸められているのかは分かりません。
----- 20118/03/26 追加 -------------------------------------
>ズレが見られるのはサイドバーのパネルだけでコンテキストメニューから呼び出すダイアログは問題ない
これには、気が付きませんでした。いつもサイドメニューを表示してその中で数値を変更していたものですので、F4を押してのダイアログは使用していませんでした。
普通の人は、サイドバーでもコンテキストメニューでもサイズは同じ数値を表示すると思いますね。
という事は、その内サイドバーの方も修正されるのかもしれませんね。気長に待つか・・・・